【问题标题】:andengine throw a ball with a force and at a particular angle和发动机以特定的角度用力扔球
【发布时间】:2012-09-16 18:35:21
【问题描述】:

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

这是我的代码 sn-p:

@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) 中添加了负数,因为如果我不这样做,球会先下降,然后在与底座碰撞后上升。

【问题讨论】:

    标签: android andengine angle throw


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 我试过这个。但是即使用户希望球向下,球也会向上移动。
    • 请给我一个示例,说明您提供给 originX、originY、fingerX、fingerY 的值。我使用此代码,它对我有用。
    • originX=4.78125,originY=9.4375,fingerX=0.625,fingerY=0.625
    • 球被连接在一根绳子上,用户拉长绳子并松开它来扔球。我必须根据绳子的伸展和角度来发射一个球。用户可以将其拖动到任意方向。
    • 您似乎将 TouchEvent 中的值分配给了错误的变量,fingerX/Y 应该改变,而 originX/Y 应该保持不变。
    【解决方案2】:

    你可以使用

    body.applyLinearImpulse(Vector2 impulse, Vector2 point)
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-06
      • 2020-12-17
      • 1970-01-01
      • 2011-07-28
      • 1970-01-01
      相关资源
      最近更新 更多