先看效果
黄色为我通过按wasd键盘所控制的模拟角色,正方体作为触发器,当我控制角色进入触发器时,触发事件,这里简单起见,只在控制台打印entered,证明实验成功。
1.环境搭建
(1)新建一个场景,创建一个plane(地面),两个cube(一个作为player(变小点),一个作为触发器Trigger)。将这些东西摆放合适。
(2)添加玩家控制脚本PlayerController.cs
public class PlayerController : MonoBehaviour
{
float moveSpeed = 5;
// Update is called once per frame
void Update()
{
PlayerMove();
}
void PlayerMove()
{
float H = Input.GetAxis("Horizontal");
float V = Input.GetAxis("Vertical");
if (H != 0 || V != 0)
{
this.transform.Translate(new Vector3(H, 0, V) * Time.deltaTime * moveSpeed, Space.World);
}
}
}
将此脚本挂载到Player上,这样Player就可以移动了。
2.制作触发器
(1)添加必要组件
作为触发器的cube中IsTrigger打上勾
给Player添加一个RigBody组件,勾掉Use Gravity。
(2)添加脚本Trigger.cs
public class Trigger : MonoBehaviour
{
private void OnTriggerEnter(Collider other)
{
Debug.Log("Entered");
}
}
创建好之后将其挂载到立方体Trigger上
运行游戏即可。
- 注意:一定要给Player添加一个RigBody组件和Collider组件,否则无法触发OnTriggerEnter事件。
拓展:还有两个与之相关的事件
(1)OnTriggerStay:当物体停留再触发器中发生(每帧)。
(2)OnTriggerExit:当 物体离开触发器时发生。