如何重置transform.Rotate位置

时间:2016-02-09 08:03:25

标签: c# unity3d

我希望能够通过单击鼠标左键将对象旋转到(15,0,0),然后在大约一秒后将其旋转回(0,0,0)。 / p>

问题是,它不会旋转回来,我似乎无法得到它。

using UnityEngine;
using System.Collections;

public class HitScript : MonoBehaviour
{
    private bool ifswung;

    // Use this for initialization
    void Start()
    {
        ifswung = false;
    }


    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            if (ifswung == false)        
            {
            transform.Rotate(15, 0, 0);
            ifswung = true;
              }
            else if(ifswung == true)
            {
                transform.Rotate(0, 0, 0);
                ifswung = false;
            }
        }
    }
}

1 个答案:

答案 0 :(得分:1)

public class HitScript : MonoBehaviour
{
    private Vector3[] rotations = { new Vextor3(15f,0f,0f),Vector3.zero } ;
    private in index = 0;
    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            if(++index >= rotations.Length)index = 0;
            transform.rotation = Quaternion.Euler(rotations[index]);
        }
    }
    //transform.rotation = Quaternion.Lerp(transform.rotation,
      //                      Quaternion.Euler(rotations[index]), Time.deltaTime);
}

所以你有两个旋转存储在数组中。你也可以使用一个布尔值,使用数组使它超过两行。

所以每次按下按钮,索引都会增加,如果索引高于数组的长度,那么它会回到0。

最后一行是您想要从一个旋转缓慢移动到另一个旋转。你必须在if语句中注释掉那个。