使用 Physics.CheckSphere 函数通过检测指定点周围是否有碰撞体,可以传入一个位置向量和一个半径值,如果需要对指定层级进行检测可以传入LayerMask 表示需要检测的碰撞体的层。结果会返回一个bool值,表示该位置是否有碰撞体与之重叠。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CheckRange : MonoBehaviour
{
public float rangeRadius;
public LayerMask layerMask;
void Update()
{
if (CheckPlayerInTargetRange(transform))
{
Debug.Log("在范围内");
}
}
/// <summary>
/// 检查角色是否在目标范围内
/// </summary>
/// <returns>目标点</returns>
bool CheckPlayerInTargetRange(Transform targetPoint)
{
return Physics.CheckSphere(targetPoint.position, rangeRadius,layerMask);
}
void OnDrawGizmos()
{
// 绘制范围,使用绿色半透明线框
Gizmos.color = new Color(0f, 1f, 0.5f, 0.5f);
Gizmos.DrawWireSphere(transform.position, rangeRadius);
}
}
运行效果
文章来源:https://www.toymoban.com/news/detail-759848.html
文章来源地址https://www.toymoban.com/news/detail-759848.html
到了这里,关于Unity 判断物体是否在指定范围内的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!