2015-10-06 108 views
0

我正在嘗試開發一種基於射手旋轉角度實例化「射擊」的簡單拍攝機制。我的問題在於即使射手面向0 *,射擊角度爲45 *(這是我猜測問題的原因,因爲當射手以45 *爲導向時,射門以精確射擊90 *)。以精確角度拍攝彈丸

射擊角(0,0,0)

enter image description here

射擊角(0,0,45)

enter image description here

注意 - 球總是從黑色扁平圓柱體的中心發射。

所需的代碼:

public class ShotMoveScript : MonoBehaviour { 
    public static float xForce; 
    public Transform shott; 
    void Update() { 
     if(Input.GetKey(KeyCode.Q)) 
     { 
      transform.Rotate(Vector3.forward, 5f); 
     } 

     if(Input.GetKey(KeyCode.E)) 
     { 
      transform.Rotate(Vector3.forward, -5f); 
     } 

     if(Input.GetKey(KeyCode.Space)) 
     { 
      xForce += 0.2f; 
     } 

     if(Input.GetKeyUp(KeyCode.Space)) 
     { 
      Instantiate(shott, transform.position, transform.rotation); 
     } 

    } 
} 

腳本連接到球,其被實例化:

public class MovementScript : MonoBehaviour { 
    void Update() { 
     Rigidbody2D rb; 
     rb = GetComponent<Rigidbody2D>(); 
     rb.gravityScale = 0.8f; 
     transform.Translate(new Vector3(1,1,0) * ShotMoveScript.xForce * Time.deltaTime, Space.Self); 
    } 
} 
+4

嗨,你可以發佈你的代碼樣本嗎? –

+0

對不起,我忘了,只是一秒 –

+0

@RussClarke加入了 –

回答

1

第三個參數旋轉(見reference)實例化時,你旋轉球。 之後,您應用指向(1,1)的矢量,以便球將沿着該方向相對於其當地旋轉移動

要麼通過Quaternion.identity作爲第三個參數Instantiate方法或沿(1,0)方向移動球。

+0

Quaternion.identity並沒有解決問題。無論射手的旋轉角度如何,它現在總是以45 *角度拍球。 沿着1,0,0移動球也沒有幫助。但是我通過沿着0,1,0移動它,幾乎得到了我需要的。現在發生的事情是在0 *時,球發射90 *和270 *球發射0 *。 –

+0

Idk爲什麼,但1,0,0現在完美。謝謝。 –

+0

@AkashAggarwal也許你在重新編譯之前運行了Unity,以及你的最新變化。這有時會發生。 – Skyblade