我正在开发一个足球游戏,用户必须选择速度、角度、方位角,以便用户可以使用所需的选择发布目标。任何人都可以制定我如何为游戏创建轨迹路径。请帮助我,因为我无法找到解决方案。
问问题
4369 次
1 回答
6
是基础物理。假设 Z 向上,您的初始 X 和 Y 速度是恒定的,并由初始角度确定(使用三角)。Z 分量完全由重力决定。您获取仰角并(再次使用 trig)将其转换为组件。那是您的初始 Z 速度。
这是最简单的公式,它忽略了风、旋转和阻力(即球在飞行过程中不会横向移动,只受重力影响)。
vx = power * cos(elevation) * sin(azimuth);
vy = power * cos(elevation) * cos(azimuth);
vz = power * sin(elevation);
现在,时间位置t
是简单的牛顿物理学:
x = vx * t;
y = vy * t;
z = vz * t - 0.5 * g * t * t;
重力在哪里g
(9.81 m/s/s)
但是直接使用这些公式并不能让您计算反弹等。为此,您需要逐步计算它。这意味着,对于较小的时间增量 ( dt
),您可以获取当前位置和速度并对其进行修改。
vx; // unchanged
vy; // unchanged
vz -= g * dt; // gravity
x += vx * dt;
y += vy * dt;
z += vz * dt;
如果您的 Z 位置低于地面,则否定vz
允许反弹。如果你碰到一个表面,你会做类似的反射(将矢量反射到表面法线)。
如果您希望飞行受到旋转(马格努斯效应)和其他力的影响,事情就会变得更加棘手。您可能还想抑制反射,因为每当球反弹时能量都会丢失。
这取决于你。我已经给出了基础知识,希望对您有所帮助。
你应该阅读弹丸运动。一旦你得到一些基本的工作并想让运动更逼真,阅读运动球的空气动力学/流体动力学...... Rabindra Mehta 的几乎任何书籍或文章都是一个很好的起点。
于 2012-10-24T02:24:18.883 回答