2014-11-06 2 views
0

Я работаю над оружейной башней. У меня все работает, за исключением того, что снаряд выстрелил из башенного ствола. В настоящее время единственным используемым стволом являетсяUnity3d C# пулеметный пулемет не будет двигаться

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

     } 
    } 

ответ

2

ли снаряд сценарий своей собственной? Не похоже, что вы устанавливаете любую скорость для инстанцированного снаряда.

Translate() не очень сильно влияет на движение, за исключением немедленной установки новой позиции. Если у снаряда имеется компонент Rigidbody, вы можете прямо установить скорость твердого тела.

Как так:

InstantiateedProjectile.velocity = Vector3.forward * cannonAmmoSpeed; 

Time.deltaTime не будет использоваться здесь, так как это нужно только быть включены в расчеты, выполненные для каждого кадра.


Как примечание стороны, вы, возможно, пожелаете рассмотреть вопрос о повторном использовании вашей вспышки эффекта вместо порождая новый, каждый выстрел. Вы можете сделать эффект невидимым и сбросить его между кадрами вместо этого, что даст лучшую производительность.

+0

Спасибо за советы. Я заработал, сняв флажок Is Kinematic для жесткого тела в инспекторе. Я также использовал скорость снаряда. – jadkins4

Смежные вопросы