refactor(ai): IAiContext.Mover→Locomotion,删除 IMover
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -7,7 +7,7 @@ namespace BaseGames.AI
|
||||
public interface IAiContext
|
||||
{
|
||||
ISensor Sensor { get; }
|
||||
IMover Mover { get; }
|
||||
IEnemyLocomotion Locomotion { get; }
|
||||
ICombatant Combat { get; }
|
||||
IActorVitals Vitals { get; }
|
||||
Blackboard Blackboard { get; }
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace BaseGames.AI
|
||||
{
|
||||
/// <summary>移动能力接口(第 3 阶段由 MoverAdapter 适配移动系统)。</summary>
|
||||
public interface IMover
|
||||
{
|
||||
void MoveTo(Vector2 target);
|
||||
void FacePlayer();
|
||||
void Stop();
|
||||
void WalkRandom();
|
||||
void LookAround();
|
||||
void UseChaseSpeed(); // 切到追击速度(适配器内部读配置的 RunSpeed)
|
||||
void UsePatrolSpeed(); // 切到巡逻速度(适配器内部读配置的 WalkSpeed)
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bfa62d8e02c8fa644b4c18929b82cbcb
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -7,7 +7,7 @@ namespace BaseGames.Enemies
|
||||
/// 把 EnemyBase 的子系统包装成 BrainGraph 的能力接口(每敌人一实例)。
|
||||
/// 状态逻辑只依赖这些接口,不直接引用具体子系统。
|
||||
/// </summary>
|
||||
public sealed class EnemyBrainContext : IAiContext, ISensor, IMover, ICombatant, IActorVitals, IEnemyActor
|
||||
public sealed class EnemyBrainContext : IAiContext, ISensor, ICombatant, IActorVitals, IEnemyActor
|
||||
{
|
||||
readonly EnemyBase _enemy;
|
||||
readonly Blackboard _blackboard = new Blackboard();
|
||||
@@ -18,7 +18,7 @@ namespace BaseGames.Enemies
|
||||
|
||||
// ---- IAiContext ----
|
||||
public ISensor Sensor => this;
|
||||
public IMover Mover => this;
|
||||
public IEnemyLocomotion Locomotion => _enemy.Locomotion;
|
||||
public ICombatant Combat => this;
|
||||
public IActorVitals Vitals => this;
|
||||
public Blackboard Blackboard => _blackboard;
|
||||
@@ -53,19 +53,6 @@ namespace BaseGames.Enemies
|
||||
public bool LostFor(float seconds) => !InVisionZone() && _lostTimer >= seconds;
|
||||
public Vector2 LastKnown => _lastKnown;
|
||||
|
||||
// ---- IMover ----
|
||||
public void MoveTo(Vector2 target) => _enemy.MoveTo(target);
|
||||
public void FacePlayer() => _enemy.FacePlayer();
|
||||
public void Stop() => _enemy.StopMovement();
|
||||
public void WalkRandom()
|
||||
{
|
||||
var nav = _enemy.Nav;
|
||||
if (nav != null && !nav.IsMoving) nav.WalkToRandom();
|
||||
}
|
||||
public void LookAround() => _enemy.BeginLookAround();
|
||||
public void UseChaseSpeed() => _enemy.Nav?.SetSpeed(_enemy.Stats != null ? _enemy.Stats.RunSpeed : 0f);
|
||||
public void UsePatrolSpeed() => _enemy.Nav?.SetSpeed(_enemy.Stats != null ? _enemy.Stats.WalkSpeed : 0f);
|
||||
|
||||
// ---- ICombatant ----
|
||||
public bool UseAbility(string abilityId)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user