感应门是很常见的一个功能,那么他是怎么实现的呢? 百度一下还是蛮多的,阿然这里还是记录一下加深一下记忆
建一个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<Transform>();
}
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<Door>();
}
// Update is called once per frame
void Update()
{
}
void OnTriggerEnter(Collider other)
{
door.OpenDoor();
}
void OnTriggerExit(Collider other)
{
door.CloseDoor();[]()
}
}
然后给人物添加一个碰撞体和刚体
运行我们就可以看到当人物靠近门时门会自动打开,人物离开后门自动关闭的效果了