0

发现了很多类似的问题,但没有一个能回答我自己的问题。这可能是一件非常简单的事情,但为时已晚,我无法理解。我有一个我正在开发的安卓游戏,你触摸屏幕,它会朝那个方向“发射”一个精灵。我已经让大部分代码工作了,但是,在精灵触发并离开后,它会到达接触点,然后只是摆动。我希望它沿着那个角度继续前进并最终反弹......

这是我的代码(以及重要的位):

List<TouchEvent> touchEvents = game.getInput().getTouchEvents();
        int len = touchEvents.size();

        for(int i = 0; i < len; i++) {
            TouchEvent event = touchEvents.get(i);                        
            if(event.type == TouchEvent.TOUCH_UP) {
                touchPoint.set(event.x, event.y);
                guiCam.touchToWorld(touchPoint);                               
            }
        }

        //Log.d("PANDAM", touchPoint.x + "|" + touchPoint.y);
        float speed = 112f;
        double theta = 180.0 / Math.PI * Math.atan2(panda_y - touchPoint.y, panda_x - touchPoint.x);
        Log.d("PANDAM", " > "+theta+" < ");

        movePanda(theta, speed, deltaTime);

而“movePanda”方法:

    private void movePanda(double angle, float speed, float deltaTime)
{   
    panda_x += speed * Math.cos(angle)*deltaTime;
    panda_y += speed * Math.sin(angle)*deltaTime;       
}

我的问题是,如何让熊猫沿着触摸矢量继续前进,而不是在到达原始触摸点时飞出?

4

1 回答 1

0

您似乎在动画的每一步都在重新计算角度,但实际上您需要记住刚开始移动时的角度。当您通过原始触摸点时,角度会改变以指向另一个方向,因此如果您在每个动画步骤中重新计算它,它将改变并最终指向另一个方向。

于 2012-09-16T21:39:30.990 回答