哨兵射线触发器模板代码
效果
配置
代码
public class Observer : MonoBehaviour
{
public Transform player;
public GameEnding gameEnding;
private bool _isPlayerInRange = false;
private void OnTriggerEnter(Collider other)
{
if (other.transform == player)
{
_isPlayerInRange = true;
}
}
private void OnTriggerExit(Collider other)
{
if (other.transform == player)
{
_isPlayerInRange = false;
}
}
private void Update()
{
if (_isPlayerInRange)
{
//创建投射射线用到的方向矢量
Vector3 dirction = player.position - transform.position + Vector3.up;
//创建射线
Ray ray = new Ray(transform.position, dirction);
//射线集中对象,包含射线的碰撞信息
RaycastHit raycastHit;
//射线如果碰到物体
if (Physics.Raycast(ray, out raycastHit))
{
//如果碰到的是玩家
if (raycastHit.collider.transform == player)
{
gameEnding.fail();
}
}
}
}
}