【发布时间】:2020-05-05 14:20:20
【问题描述】:
在我的 3D 游戏(自上而下的射击游戏)中,我尝试这样做: 当您在地图上的特定区域单击鼠标按钮(点上的光线投射) -> 从枪中射出一枪 -> 弹丸以特定路径沿枪管方向飞行,并且与鼠标指针的距离相同(但不是方向)。 我已经有了计算弹丸轨迹的源代码。 帮助使射弹沿枪管的方向飞行,但使用 mouseposition 显示的距离 射线投射,而不是 mouseposition 方向。
```private void FireCannonAtPoint(Vector3 point)
{
var velocity = BallisticVelocity(point, _angle);
GameObject projectile = Instantiate(_projectile, _shootPoint.transform.position, Quaternion.identity) as GameObject;
projectile.GetComponent<Rigidbody>().velocity = velocity;
}
private Vector3 BallisticVelocity(Vector3 destination, float angle)
{
Vector3 dir = destination - _shootPoint.transform.position;
float height = dir.y;
dir.y = 0;
float dist = dir.magnitude;
float a = angle * Mathf.Deg2Rad;
dir.y = dist * Mathf.Tan(a);
dist += height / Mathf.Tan(a);
float velocity = Mathf.Sqrt(dist * Physics.gravity.magnitude / Mathf.Sin(2 * a));
return velocity * dir.normalized;
}```
【问题讨论】:
-
鼠标位置光线投射而不是鼠标位置方向是什么意思?
-
如果你看一下我附上的图片:鼠标位置方向是 - “炮塔”和“raycast mouseclick”之间的线。 mouseposition raycast 是 - 子弹从“炮塔”向前飞(图中红色箭头)。
标签: c# unity3d vector game-physics