使用 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);
}
}
运行效果

本文介绍了一个Unity脚本示例,该脚本使用Physics.CheckSphere函数检测指定点周围的碰撞体。通过传入位置、半径和LayerMask,可以检查特定区域内是否有与给定层匹配的碰撞体,并返回是否重叠的结果。此外,脚本还包含了OnDrawGizmos方法来可视化检测范围。
2972

被折叠的 条评论
为什么被折叠?



