检查门的旋转

时间:2015-12-04 23:33:23

标签: c# unity3d rotation unity5

我有一个教程场景设置,最后我有一个带有门纹理的大小调整的立方体。我已设置代码来检查碰撞并旋转它的枢轴,但在碰撞后,门会永远旋转。在我的void OnCollisionEnter()里面,我有一个if语句:

if (pivot.transform.rotation.eulerAngles.y == 83)
{
    pivot.GetComponent<Rigidbody>().freezeRotation = true;
}

但它似乎不起作用。有人能开导我吗?因为我似乎无法找到答案。

以下是整个脚本:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class DoorOpen : MonoBehaviour {

    public GameObject pivot;


    void Start () {

    }

    void Update () {

    }

    void OnCollisionEnter(Collision door)
    {

        if (door.collider.tag == "Door")
        {
            StartCoroutine(openDoor());
        }

    }
    IEnumerator openDoor() {

        float angle=0;
        for(int i=0 ;i<=6;i++){
            angle+= i * 10;
            pivot.transform.eulerAngles = new Vector3(0f,83f,0f);
            yield return new WaitForSeconds(0.4f);
        }

    }
}

1 个答案:

答案 0 :(得分:1)

我建议您使用Tag来更好地控制游戏。而不是直接指定角度,你可以创建一个很好的门动画。 使用&#39; ==&#39;操作员似乎没必要

void OnCollisionEnter(Collision door)
{

    if (door.collider.tag == "desiredTag")
    {
         StartCoroutine(openDoor());
    }

}
IEnumerator openDoor() {

  float angle=0;
  for(int i=1 ;i<=7;i++){
   angle = i * 10;
    pivot.transform.eulerAngles = new Vector3(0f,angle,0f);
     yield return new WaitForSeconds(0.4f);
   }

 }