我的脚本永远不会运行我的if语句的内容,但我没有得到任何错误

时间:2015-06-09 12:07:37

标签: c# unity3d

所以我试图使用代码在按键时来回摆动武器,但由于某种原因,没有任何事情发生。我已经通过单独运行代码测试了各种代码,并且我的所有语句都可以在这里和那里进行一些更改。但我只是想弄清楚如何将它们放在一起并让它们全部运转。感谢任何指针!

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

2 个答案:

答案 0 :(得分:1)

您的代码正在运行第一个&#34;如果&#34;将剑旋转到大约6.5度(假设为30fps)的陈述。之后,6.5超出了任何if语句的范围,所以没有其他事情发生。

我的指针是使用攻击键设置DESIRED旋转,然后让每个帧更新根据它的当前旋转向该位置旋转。

答案 1 :(得分: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);
        }
    }
}