如何在XNA 2D游戏中创建垂直抛物线路径?

时间:2012-10-16 12:40:24

标签: xna windows-phone-7.1

我正在为Windows Phone 7.1开发基于XNA的2D游戏。我的要求是根据轻弹的数量和角度轻弹一个物体,它将在垂直射弹运动中生成动画。对于例如在你面前有一个湖,你想扔石头。必须复制相同的动作,相机才是人眼。

要覆盖3个级别的距离。 Y轴所覆盖的距离大于X轴所覆盖的距离。

我可以看到许多方程在水平(X-)轴上给出了弹丸运动但没有在Y轴上显示弹丸运动。

任何想法如何在X坐标和Y坐标方面实现这种射弹运动?

1 个答案:

答案 0 :(得分:1)

如果你使用Vector2而不是角度,你可以实现一个简单而准确的非常基本的物理引擎。

要被轻弹的对象将有Vector2 VelocityVector2 Position

然后,您只需将鼠标之间的距离Vector2添加到Velocity,然后将每个帧的Velocity添加到Position,然后再添加重力

以下是一个示例实现:

public class FlickObject
{
    public Vector2 Velocity;
    public Vector2 Position;

    public FlickObject () {}

    public void Update(GameTime t)
    {
        Position += Velocity;
    }
}

在游戏类中(当用户轻弹对象时):

flickObject.Velocity += FlickDistance;

其中FlickDistance是鼠标(或者你计算它)与对象之间的距离。

要完成它,请添加重力:

flickObject.Velocity += new Vector2(0, GRAVITY);

GRAVITY设置为某个正值。