2015-06-09 55 views
0

因此,我試圖使用代碼在鍵上來回擺動武器,但由於某些原因,沒有發生。我已經通過單獨運行測試了代碼的各個部分,並且我的所有語句都在這裏和那裏進行了一些更改。但我無法弄清楚如何將它們融合在一起,並讓它們全部運行。欣賞任何指針!我的腳本永遠不會運行我的if語句的內容,但我沒有得到任何錯誤

public float BackRotationsSpeed = 100f; 
public float ForwardRotationSpeed = 300f; 


// Use this for initialization                    // Original rotation cordinates of sword (-1.523,86.914,8.212)   
void Start() { 
                              // Rotation kan foregå på left right up down forward backwards 
} 

// Update is called once per frame 
void Update() {                    

    if (Input.GetKey (KeyCode.U) && transform.eulerAngles.z > 8.2 && transform.eulerAngles.z < 8.3)   // Checks if sword is in its original location, and if it is swing backwards. 
    {  
     transform.Rotate (Vector3.forward, -BackRotationsSpeed * Time.deltaTime); 
    } 


    if (Input.GetKey (KeyCode.U) && transform.eulerAngles.z > 70 && transform.eulerAngles.z < 200)   // Checks if sword has reached furthest back point before swining forward + triple the speed swinging forward for extra oomf! 
    { 
     transform.Rotate (Vector3.forward, ForwardRotationSpeed * Time.deltaTime); 
    } 


    if(Input.GetKey (KeyCode.U) &&transform.eulerAngles.z>8.3 && transform.eulerAngles.z<70)     // Checks if sword has reached furthest forward point in the forward swing, if it is reset the rotation to its origin and wait for next attack command 
    { 
     Vector3 temp = transform.rotation.eulerAngles; 
     temp.z = 8.21f; 
     transform.rotation = Quaternion.Euler(temp); 
    } 
+0

當你放置一個斷點,一步一步移動你的代碼不會進入任何if語句? –

+0

當你的z角度較低時,你將會陷入僵局8.2。 –

回答

0

嘗試從其他像下面拉了輸入關鍵詞的語句了,也儘量考慮到未列出的角度,如果劍落入該區域,你不會得到迴應了。

不要忘記,有負面的角度,他們可以給你一個真正的困難時間與他們合作。多個不同的數字可以說明完全相同的方向,有時數字在90左右後會回落到0,所以只要確保您正在調試所有角度並自己檢查浮動。

public float BackRotationsSpeed = 100f; 
public float ForwardRotationSpeed = 300f; 


// Use this for initialization   
void Start() { 
} 

// Update is called once per frame 
void Update() {                    
    if (Input.GetKey (KeyCode.U)) 
    { 
     if (transform.eulerAngles.z > 8.2 && transform.eulerAngles.z < 8.3)   // Checks if sword is in its original location, and if it is swing backwards. 
     {  
      transform.Rotate (Vector3.forward, -BackRotationsSpeed * Time.deltaTime); 
     } 


     if (transform.eulerAngles.z > 70 && transform.eulerAngles.z < 200)   // Checks if sword has reached furthest back point before swining forward + triple the speed swinging forward for extra oomf! 
     { 
      transform.Rotate (Vector3.forward, ForwardRotationSpeed * Time.deltaTime); 
     } 


     if(transform.eulerAngles.z>8.3 && transform.eulerAngles.z<70)     // Checks if sword has reached furthest forward point in the forward swing, if it is reset the rotation to its origin and wait for next attack command 
     { 
      Vector3 temp = transform.rotation.eulerAngles; 
      temp.z = 8.21f; 
      transform.rotation = Quaternion.Euler(temp); 
     } 
    } 
} 
1

您的代碼正在運行第一個「if」語句,它將劍旋轉到6.5度左右(假設30fps)。之後,6.5以外的任何if語句的範圍,所以沒有其他事情發生。

我的指針是使用攻擊鍵來設置DESIRED旋轉,然後根據每個幀的當前旋轉將幀更新向該位置旋轉。

相關問題