我正在为Windows Phone 7.1开发基于XNA的2D游戏。我的要求是根据轻弹的数量和角度轻弹一个物体,它将在垂直射弹运动中生成动画。对于例如在你面前有一个湖,你想扔石头。必须复制相同的动作,相机才是人眼。
要覆盖3个级别的距离。 Y轴所覆盖的距离大于X轴所覆盖的距离。
我可以看到许多方程在水平(X-)轴上给出了弹丸运动但没有在Y轴上显示弹丸运动。
任何想法如何在X坐标和Y坐标方面实现这种射弹运动?
答案 0 :(得分:1)
如果你使用Vector2
而不是角度,你可以实现一个简单而准确的非常基本的物理引擎。
要被轻弹的对象将有Vector2 Velocity
和Vector2 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
设置为某个正值。