feat(enemy): IEnemyLocomotion 增加 Pursue 寻路逼近原语(RunSpeed)
This commit is contained in:
@@ -11,6 +11,7 @@ namespace BaseGames.Tests.EditMode.AI
|
|||||||
public bool IsMoving { get; set; }
|
public bool IsMoving { get; set; }
|
||||||
public void SetMode(LocomotionMode mode) { CurrentMode = mode; Calls.Add("SetMode:" + mode); }
|
public void SetMode(LocomotionMode mode) { CurrentMode = mode; Calls.Add("SetMode:" + mode); }
|
||||||
public void Approach(Transform t) { CurrentMode = LocomotionMode.Approach; Calls.Add("Approach"); }
|
public void Approach(Transform t) { CurrentMode = LocomotionMode.Approach; Calls.Add("Approach"); }
|
||||||
|
public void Pursue(Vector2 p) { CurrentMode = LocomotionMode.Approach; Calls.Add("Pursue"); }
|
||||||
public void MoveTo(Vector2 p) { Calls.Add("MoveTo"); }
|
public void MoveTo(Vector2 p) { Calls.Add("MoveTo"); }
|
||||||
public void Face(Vector2 p) { CurrentMode = LocomotionMode.Face; Calls.Add("Face"); }
|
public void Face(Vector2 p) { CurrentMode = LocomotionMode.Face; Calls.Add("Face"); }
|
||||||
public void Stop() { CurrentMode = LocomotionMode.Idle; Calls.Add("Stop"); }
|
public void Stop() { CurrentMode = LocomotionMode.Idle; Calls.Add("Stop"); }
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ namespace BaseGames.AI
|
|||||||
{
|
{
|
||||||
void SetMode(LocomotionMode mode); // Idle(停) / Patrol(按配置策略游走)
|
void SetMode(LocomotionMode mode); // Idle(停) / Patrol(按配置策略游走)
|
||||||
void Approach(Transform target); // 持续跟随,派生 RunSpeed
|
void Approach(Transform target); // 持续跟随,派生 RunSpeed
|
||||||
|
void Pursue(Vector2 target); // 寻路逼近(RunSpeed):每帧朝 target 重寻路(底层防抖)
|
||||||
void MoveTo(Vector2 point); // 一次性目标点
|
void MoveTo(Vector2 point); // 一次性目标点
|
||||||
void Face(Vector2 lookAt); // 停 + 朝向
|
void Face(Vector2 lookAt); // 停 + 朝向
|
||||||
void Stop();
|
void Stop();
|
||||||
|
|||||||
@@ -84,6 +84,18 @@ namespace BaseGames.Enemies
|
|||||||
_enemy?.MoveTo(point);
|
_enemy?.MoveTo(point);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 寻路逼近:设 Approach 模式 + RunSpeed,每帧朝 target 发一次寻路请求(底层 Nav 自带防抖/受阻/NavLink)。
|
||||||
|
/// 与一次性 <see cref="MoveTo"/> 的区别:设跑速、语义为"持续追向移动目标"。供 AI 追击态每帧调用。
|
||||||
|
/// </summary>
|
||||||
|
public void Pursue(Vector2 target)
|
||||||
|
{
|
||||||
|
_mode = LocomotionMode.Approach;
|
||||||
|
_approachTarget = null;
|
||||||
|
if (_enemy?.Stats != null) _enemy.Nav?.SetSpeed(_enemy.Stats.RunSpeed);
|
||||||
|
_enemy?.MoveTo(target);
|
||||||
|
}
|
||||||
|
|
||||||
public void Face(Vector2 lookAt)
|
public void Face(Vector2 lookAt)
|
||||||
{
|
{
|
||||||
_mode = LocomotionMode.Face;
|
_mode = LocomotionMode.Face;
|
||||||
|
|||||||
Reference in New Issue
Block a user