【发布时间】:2018-08-16 14:25:11
【问题描述】:
我正在尝试从高速移动的玩家身上发射弹丸。问题是子弹似乎没有继承角速度。如果玩家以 500 U/s 的速度直线移动,那么子弹正确地继承了该速度并将其自身的速度添加到该速度:
GameObject bullet = Instantiate(projectile, gun.transform.position, gun.transform.rotation);
bullet.GetComponent<Rigidbody>().velocity = r.velocity + bullet.transform.forward *bulletSpeed;
但是,如果玩家转得非常快,它不会继承旋转速度,并且子弹看起来会偏向一边。
我该如何实现呢?我尝试将玩家的角速度分配给子弹,但这只会导致子弹在向同一方向移动时旋转。
一些额外的细节:
我正在使用rigidbody.MoveRotation() 来旋转我的播放器,但我手动计算了angularVelocity 以将其分配给子弹
我尝试使用 AddTorque() 移动播放器,但无法使用子弹产生任何结果
【问题讨论】:
-
如果您将子弹定义为枪的子对象,那么如果枪移动和/或旋转,那么子弹也将相对于枪移动。我认为这不是一个好主意。
标签: c# unity3d game-physics