我是'andengine'的新手,我开发了像'mario'这样的简单游戏,所以我想以适当的方式跳跃并移动这个角色。
请给我一些想法,我使用速度和冲动,但这不能正常工作。
答案 0 :(得分:2)
AndEngineExamples项目包含几个与您的应用程序类似的示例游戏。 在深入研究代码之前,您可以先下载APK和tryout。
答案 1 :(得分:1)
我是这样做的(我的Player类接口):
public void moveLeft() {
Vector2 velocity = Vector2Pool.obtain(-speed, body.getLinearVelocity().y);
body.setLinearVelocity(velocity);
Vector2Pool.recycle(velocity);
int offset = isInjured ? 4 : 0;
if (!isAnimationRunning()) {
setCurrentTileIndex(2 + offset);
animate(new long[]{200, 200}, 2 + offset, 3 + offset, 1, animationListener);
}
}
public void moveRight() {
Vector2 velocity = Vector2Pool.obtain(speed, body.getLinearVelocity().y);
body.setLinearVelocity(velocity);
Vector2Pool.recycle(velocity);
int offset = isInjured ? 4 : 0;
if (!isAnimationRunning()) {
setCurrentTileIndex(0 + offset);
animate(new long[]{200, 200}, 0 + offset, 1 + offset, 1, animationListener);
}
}
public void stop() {
Vector2 velocity = Vector2Pool.obtain(0, body.getLinearVelocity().y);
body.setLinearVelocity(velocity);
Vector2Pool.recycle(velocity);
stopAnimation();
int offset = isInjured ? 4 : 0;
if(getCurrentTileIndex() % 4 > 1 )
setCurrentTileIndex(2 + offset);
else
setCurrentTileIndex(0 + offset);
}
public void stopJump() {
if(jumpsLeft > 0) {
Vector2 velocity = Vector2Pool.obtain(body.getLinearVelocity().x, body.getLinearVelocity().y / 5);
body.setLinearVelocity(velocity);
Vector2Pool.recycle(velocity);
}
}
public void jump() {
if(jumpsLeft > 0) {
Vector2 impulse = Vector2Pool.obtain(0, body.getMass() * -12);
body.applyLinearImpulse(impulse, body.getWorldCenter());
Vector2Pool.recycle(impulse);
jumpsLeft--;
}
}
然后,我创建了左,右,跳等移动按钮。
在AreaTouched事件中,为了执行操作,我执行player.jump()
。
为了采取行动,我做player.stopJump()
。
move_left和move_right按钮的代码几乎相同。