更新视觉训练距离配置

This commit is contained in:
2026-06-28 23:23:01 +08:00
parent 6cc4f1035d
commit fb2dbfca99
2 changed files with 16 additions and 2 deletions

View File

@@ -219,6 +219,7 @@ MonoBehaviour:
serializedVersion: 2
m_Bits: 0
rayOffsetY: 0.5
maxSightDistance: 4
loseSightTime: 3
listenRange: 15
bellArriveDistance: 1

View File

@@ -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);