【Unity,C#】哨兵射线触发器模板代码

哨兵射线触发器模板代码


效果

请添加图片描述

配置

在这里插入图片描述

代码

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();
                }
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_42473228/article/details/126060016