2016-12-06 83 views
1

我正在創建一個自上而下的2D遊戲。這裏是讓我的球員實例子彈代碼:在其旋轉方向移動一顆子彈

public GameObject bullet; 
void Update() 
    { 
     if (Input.GetButton("Fire1") && Time.time > nextFire) 
     { 
      nextFire = Time.time + fireRate; 
      Instantiate(bullet, transform.position, transform.rotation); 
     } 
    } 

這裏連接到子彈腳本讓它動:

void Update() 
    { 
     transform.Translate(transform.forward * Time.deltaTime * speed); 
    } 

看來,子彈只在它的Z軸移動,這在2D遊戲中看起來就像靜止不動。如何解決這個問題?

+0

您是否嘗試過除transform.forward以外的其他任何方向? – Maakep

+0

那麼如何用'transform.right'沿着局部x軸移動呢? – Serlite

回答

2

Vector3.forward與做新的Vector3(0,0,1)相同,這意味着它在z軸上是正的。從下面選擇代表您的相機設置的內容。

這裏是靜態傭工的Vector3從類型列表:

  • 背速記書寫的Vector3(0,0,-1)。
  • down寫入Vector3(0,-1,0)的速記。
  • forward寫入Vector3(0,0,1)的簡寫形式。
  • left寫入Vector3(-1,0,0)的速記。
  • 其中一個用於寫入Vector3(1,1,1)的速記。
  • 右寫入Vector3(1,0,0)的速記。
  • up寫入Vector3(0,1,0)的速記。
  • 零寫入Vector3(0,0,0)的速記。

編輯下面的評論:

變換你的GameObjects位置,旋轉和縮放。當你使用translate方法時,你使用Vector3來移動GameObject的方向(在你的情況下調整到幀間的deltaTime),這取決於方向(是在X/Y/Z軸上查看) GameObject相對於世界空間的相機(通常,除非relativeTo被調整)並且具有特定的軸作爲整體,則GameObject需要相對於該空間移動。

想想這樣吧,比如說你坐在辦公桌前,桌子就是世界空間,從你的角度來看,你可以觀察到的是3個維度。你可以看到左右(x軸),上下(y軸)和從你的角度看(z軸)。如果你想向前移動一個回形針,那麼從向下看z軸的時候就會是Vector3.up,但是如果你站着向下看着桌子(就像攝像機在世界空間之上一樣),那麼爲了使紙張剪輯向前移動(向上),你會使用Vector3.forward。

這就是爲什麼我說什麼代表您的相機設置,因爲如果沒有指定您的場景可以在任何安排。

+0

我需要將「變換」更改爲「Vector3」+以上。我不明白「變換」和「Vector3」之間的區別。 – Abdou023

+0

這實際上非常有幫助。謝謝。 – Abdou023

相關問題