1

在 AndEngine 游戏中,我想扔一个球物理体。用户设置它的角度和力量并抛出它。它的场景和我们在愤怒的小鸟中看到的一样。我已经计算了力和角度,但我很困惑如何同时将两者应用在球上,这意味着球应该以计算出的角度投掷但具有特定的力量。任何人都可以引导我走向正确的方向吗?

这是我的代码片段:

@Override
public boolean onAreaTouched(TouchEvent event,ITouchArea pTouchArea, float x, float y) {
    // TODO Auto-generated method stub
    if(event.isActionDown()) {
        ......
    }
    else if(event.isActionMove()) {
        ......
    }
    else if(event.isActionCancel() || event.isActionOutside() || event.isActionUp()) {
        .....
        launchHero(hero, string1.getX1()/PIXEL_TO_METER_RATIO_DEFAULT, string1.getY1()/PIXEL_TO_METER_RATIO_DEFAULT, x/PIXEL_TO_METER_RATIO_DEFAULT, y/PIXEL_TO_METER_RATIO_DEFAULT);
}

public void launchHero(Hero hero, float originX, float originY, float fingerX, float fingerY) {
    Vector2 shoot = new Vector2((originX - fingerX), -(originY - fingerY));
    shoot = shoot.nor().mul(10);

    hero.getBody().setLinearVelocity(shoot);

}
    }

    return false;

}

我在 (originY - fingerY) 中添加了负数,因为如果我不这样做,球首先会下降,然后在与底座碰撞后会上升。

4

2 回答 2

4

这很简单,使用Body.setLinearVelocity(Vector2 pVector). 方向和力都由矢量的参数决定。这是一个示例代码:

Vector2 shoot = new Vector2((originX - fingerX), (originY - fingerY));
body.setLinearVelocity(shoot);

这将朝手指和原点所形成的方向射击身体,或者,在愤怒的小鸟的情况下,手指和吊索。

如果您想使力恒定并将其乘以某个数字,您可以在拍摄前执行此操作:

shoot = shoot.nor().mul(multiplier);
于 2012-09-25T11:32:21.550 回答
0

您可以使用

body.applyLinearImpulse(Vector2 impulse, Vector2 point)

我更喜欢这个功能,setLinearVelocity因为它提供了更多的可能性。要使用此功能,您需要在坐标和应用它的身体点中给出脉冲。

于 2012-09-26T16:56:44.383 回答