更新视觉训练距离配置
This commit is contained in:
@@ -35,6 +35,9 @@ namespace IndianOceanAssets.Engine2_5D
|
||||
[Tooltip("射线起点偏移(避免从地面发射)")]
|
||||
[SerializeField] private float rayOffsetY = 0.5f;
|
||||
|
||||
[Tooltip("最大视野距离(超过此距离看不到玩家)")]
|
||||
[SerializeField] private float maxSightDistance = 15f;
|
||||
|
||||
[Header("脱离计时")]
|
||||
[Tooltip("玩家脱离视线后,继续追击的时间(秒)")]
|
||||
[SerializeField] private float loseSightTime = 3f;
|
||||
@@ -255,18 +258,24 @@ namespace IndianOceanAssets.Engine2_5D
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 检测是否能看到玩家(射线检测)
|
||||
/// 检测是否能看到玩家(射线检测 + 距离检测)
|
||||
/// </summary>
|
||||
private bool CanSeePlayer()
|
||||
{
|
||||
if (playerTarget == null) return false;
|
||||
|
||||
// 射线起点(稍微抬高,避免从地面发射)
|
||||
// 计算距离
|
||||
Vector3 rayStart = transform.position + Vector3.up * rayOffsetY;
|
||||
Vector3 rayEnd = playerTarget.position + Vector3.up * rayOffsetY;
|
||||
Vector3 dir = rayEnd - rayStart;
|
||||
float dist = dir.magnitude;
|
||||
|
||||
// 距离检测:超过最大视野距离看不到玩家
|
||||
if (dist > maxSightDistance)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// 调试:在Scene视图中绘制射线
|
||||
Debug.DrawLine(rayStart, rayEnd, CanSeePlayerDebugColor());
|
||||
|
||||
@@ -351,6 +360,10 @@ namespace IndianOceanAssets.Engine2_5D
|
||||
Gizmos.color = stateColor;
|
||||
Gizmos.DrawWireSphere(transform.position, 0.5f);
|
||||
|
||||
// 绘制最大视野距离(绿色线框)
|
||||
Gizmos.color = new Color(0f, 1f, 0f, 0.2f);
|
||||
Gizmos.DrawWireSphere(transform.position, maxSightDistance);
|
||||
|
||||
// 绘制聆听范围
|
||||
Gizmos.color = new Color(0f, 0.85f, 1f, 0.3f);
|
||||
Gizmos.DrawWireSphere(transform.position, listenRange);
|
||||
|
||||
Reference in New Issue
Block a user