andengine用力和特定角度投掷球

时间:2012-09-25 09:07:11

标签: android andengine angle throw

在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)添加了负数,因为如果我不这样做,球首先下降然后在与基地相撞后,它会上升。

2 个答案:

答案 0 :(得分:4)

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

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

这将按照手指和原产地的方向拍摄身体,或者,在“愤怒的小鸟”的情况下,用手指和吊索拍摄。

如果你想让力不变并乘以某个数字,你可以在拍摄之前这样做:

shoot = shoot.nor().mul(multiplier);

答案 1 :(得分:0)

您可以使用

body.applyLinearImpulse(Vector2 impulse, Vector2 point)

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