Unity3d C#炮塔炮弹不会移动

时间:2014-11-06 20:03:40

标签: c# unity3d game-physics

我在炮塔上工作。我把一切都搞定了,除了把炮弹射出炮塔炮管外。目前,唯一使用的桶是

void Start(){
    firingPointRight = GameObject.FindGameObjectWithTag ("FiringPointRight").transform;
    firingPointLeft = GameObject.FindGameObjectWithTag ("FiringPointLeft").transform;
}

void Update() {
    if(Input.GetMouseButton(0)){
        count++;
        if (count >= maxCount)
        {
            count = 0;
            //Debug.Log ("FIRE");
            firingPointRight = GameObject.FindGameObjectWithTag ("FiringPointRight").transform;
            firingPointLeft = GameObject.FindGameObjectWithTag ("FiringPointLeft").transform;

            //  Create cannon muzzle fire effect.
            GameObject e1 = Instantiate (cannonMuzzleFire) as GameObject;
            e1.transform.position = firingPointRight.transform.position;
            e1.transform.rotation = firingPointRight.transform.rotation;

            Destroy (e1, 0.03f);

            GameObject e2 = Instantiate (cannonMuzzleFire) as GameObject;
            e2.transform.position = firingPointLeft.transform.position;
            e2.transform.rotation = firingPointLeft.transform.rotation;

            Destroy (e2, 0.03f);
            //-------------------------------------------

            //Left cannon. Fire projectile from cannon.

            //Debug.Log ("Firing Left");
            Rigidbody InstantiateedProjectile = Instantiate(cannonAmmo, firingPointLeft.transform.position, firingPointLeft.transform.rotation) as Rigidbody;
            if (InstantiateedProjectile != null)
            {
                print ("Firing projectile");
                InstantiateedProjectile.transform.Translate(Vector3.forward * cannonAmmoSpeed * Time.deltaTime);
            }

        }
    }

1 个答案:

答案 0 :(得分:2)

射弹是否有自己的脚本?看起来你没有为实例化的射弹设置任何速度。

除了立即设置新位置之外,

Translate()在移动方式上并没有太大的作用。如果射弹附有一个刚体部件,那么你可以直接设置刚体的速度。

像这样:

InstantiateedProjectile.velocity = Vector3.forward * cannonAmmoSpeed;

此处不会使用Time.deltaTime,因为它只需要包含在每帧执行的计算中。


作为旁注,您可能希望考虑重复使用眩光效果,而不是每次拍摄都会产生新效果。您可以使效果不可见,并在镜头之间重置,这样可以提供更好的性能。