Unity3d C#炮塔炮弹赢得';别动

Unity3d C#炮塔炮弹赢得';别动,c#,unity3d,game-physics,C#,Unity3d,Game Physics,我在炮塔上工作。除了炮塔枪管里的弹丸外,我什么都做得很好。目前,唯一使用的桶是 void Start(){ firingPointRight = GameObject.FindGameObjectWithTag ("FiringPointRight").transform; firingPointLeft = GameObject.FindGameObjectWithTag ("FiringPointLeft").transform; } void Update() {

我在炮塔上工作。除了炮塔枪管里的弹丸外,我什么都做得很好。目前,唯一使用的桶是

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);
            }

        }
    }

射弹有自己的脚本吗?看起来您并没有为实例化的投射物设置任何速度

Translate()除了立即设置新位置外,在移动过程中不会执行太多操作。如果投射物附加了刚体组件,则可以直接设置刚体的速度

像这样:

InstantiateedProjectile.velocity = Vector3.forward * cannonAmmoSpeed;
这里不使用Time.deltaTime,因为它只需要包含在每帧执行的计算中



作为一个旁注,你可能会考虑重新使用你的耀斑效果,而不是每次拍摄一个新的。您可以将效果设置为不可见,并在两次拍摄之间将其重置,这将提供更好的性能。

谢谢您的提示。我通过取消选中inspector中刚体的“Is Kinetic”复选框使其工作。我也用了射弹的速度。