我有一个教程场景设置,最后我有一个带有门纹理的大小调整的立方体。我已设置代码来检查碰撞并旋转它的枢轴,但在碰撞后,门会永远旋转。在我的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);
}
}
}
答案 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);
}
}