我正在制作一个游戏,其中应该有一个机器人向另一个机器人扔球形物体。
投出的球应以对称的弧线飞行。很确定这个数学词是抛物线。
两个机器人都在 x 轴上。
我怎样才能在我的游戏中实现这样的事情?我尝试了不同的方法,但没有一个有效。
我的游戏中当前移动物体的系统是这样的:每个物体都有x
and y
坐标(变量),以及dx
and dy
变量。
每个对象都有一个move()
方法,该方法在游戏循环的每个周期都会被调用。它只是添加了dx
to x
and dy
to y
.
我怎样才能将我所描述的内容应用到这个系统中?
如果涉及到很多数学,请尽量用简单的方式解释,因为我数学不太好。
我的情况:
多谢
你应该添加velocity到你的导弹。
速度是一个矢量,这意味着它表示导弹在 x 轴上移动的速度和 y 轴上移动的速度。现在,而不是使用Move()
使用类似的东西Update()
。像这样的东西:
void Update()
{
position.X += velocity.X;
position.Y += velocity.Y;
}
现在让我们想想,导弹发射后会发生什么:
一开始它有一定的启动速度。例如,某人在 x 方向上以 1 m/s 的速度发射导弹,在 y 方向上以 -0.5 m/s 的速度发射导弹。然后,当它发射时,导弹将被拉向地面 - 它的 Y 速度将向地面增加。
void Update()
{
velocity.Y += gravity;
position.X += velocity.X;
position.Y += velocity.Y;
}
这将使你的导弹根据物理原理(不包括空气阻力)移动,并产生漂亮的抛物线。
Edit:您可能会问如何计算初速度。假设我们有给定的射击角度(射击线和地面之间),并且初始角度speed(我们可能知道发射后导弹的速度有多快,只是不知道X和Y值)。然后:
velocity.X = cos(angle) * speed;
velocity.Y = sin(angle) * speed;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)