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