Unity中人物靠近门时自动开门


感应门是很常见的一个功能,那么他是怎么实现的呢? 百度一下还是蛮多的,阿然这里还是记录一下加深一下记忆
建一个cube,命名为Door 随便拖拽一下就成门的形状了,我这里加了一个材质

但是大家都知道物体都是通过中心点进行旋转的,达不到我们所需的开门效果,那我们就建一个空物体DoorShaft 门轴 然后将Door拖进来作为他的子物体,选中两个物体DoorShaft 和Door然后设置为轴心

这个时候你旋转一下DoorShaft 就可以看到他已经是开关门的效果了,那人物靠近时自动开门是怎么实现的呢 再建立一个空物体DoorTrigger添加碰撞器 建两个脚本Door 和DoorTrigger分别挂载到DoorShaft 和 DoorTrigger上
脚本如下:

 public class Door : MonoBehaviour
    {
        private Transform transform;
        // Start is called before the first frame update
        void Start()
        {
            transform = gameObject.GetComponent();
        }

        public void OpenDoor()
        {
            transform.Rotate(Vector3.up, 90);
        }
        public void CloseDoor()
        {
            transform.Rotate(Vector3.up, -90);
        }
    }
 public class DoorTrigger : MonoBehaviour
    {
        private Door door;
        Connections conn = new Connections();
        // Start is called before the first frame update
        void Start()
        {
            door = GameObject.Find("DoorShaft").GetComponent();
        }

        // Update is called once per frame
        void Update()
        {
        }

        void OnTriggerEnter(Collider other)
        {
                door.OpenDoor();
        }
        void OnTriggerExit(Collider other)
        {
                door.CloseDoor();[]()          
         }   
    }

然后给人物添加一个碰撞体和刚体

运行我们就可以看到当人物靠近门时门会自动打开,人物离开后门自动关闭的效果了