2015-06-09 59 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旋转,然后根据每个帧的当前旋转将帧更新向该位置旋转。

相关问题