无论up.right.还是forward,都是一样的原理。
transform.Translate(transform.up * BulletSpeed * Time.deltaTime, Space.World);
Transform.up在移动对象的同时还要加上旋转,如果此时使用的Space.Self,那么对象(这里是发射子弹)还要加上本身旋转的角度再发射出去:如果坦克朝左发射,那么子弹会朝左,但是向下运动(向左的绿轴 + 旋转90°)
transform.Translate(Vector3.up * BulletSpeed * Time.deltaTime, Space.Self);
而Vector3.up只是移动,如果坦克朝左发射,那么子弹也会朝左运动。如果使用Space.World,那么无论坦克从哪个方向发射,子弹永远是向着世界坐标轴的绿轴运动的
所以在以上情况下,transform.up要对应Space.World,Vector3.up要对应Space.Self