我正在为 Windows Phone 7.1 开发基于 XNA 的 2D 游戏。我的要求是轻弹一个对象,根据轻弹的数量和角度,它会以垂直的弹丸运动进行动画处理。例如,你面前有一个湖,你想往里面扔石头。必须用相机作为人眼来复制相同的动作。
有3个级别的距离要覆盖。Y 轴覆盖的距离大于 X 轴覆盖的距离。
我可以看到许多方程给出了水平(X)轴上的弹丸运动,但没有一个方程显示 Y 轴上的弹丸运动。
知道如何根据 X 和 Y 坐标实现这种抛射运动吗?
我正在为 Windows Phone 7.1 开发基于 XNA 的 2D 游戏。我的要求是轻弹一个对象,根据轻弹的数量和角度,它会以垂直的弹丸运动进行动画处理。例如,你面前有一个湖,你想往里面扔石头。必须用相机作为人眼来复制相同的动作。
有3个级别的距离要覆盖。Y 轴覆盖的距离大于 X 轴覆盖的距离。
我可以看到许多方程给出了水平(X)轴上的弹丸运动,但没有一个方程显示 Y 轴上的弹丸运动。
知道如何根据 X 和 Y 坐标实现这种抛射运动吗?
如果您使用 aVector2
而不是角度,您可以实现一个非常简单且准确的基本物理引擎。
要轻弹的对象将具有 aVector2 Velocity
和 a Vector2 Position
。
然后您可以将鼠标之间的距离作为 a添加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);
WhereGRAVITY
设置为某个正值。