chore: initial commit
This commit is contained in:
0
Assets/Scripts/Enemies/Navigation/.gitkeep
Normal file
0
Assets/Scripts/Enemies/Navigation/.gitkeep
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"excludePlatforms": [],
|
||||
"allowUnsafeCode": false,
|
||||
"precompiledReferences": [],
|
||||
"name": "BaseGames.Enemies.Navigation",
|
||||
"defineConstraints": [],
|
||||
"noEngineReferences": false,
|
||||
"versionDefines": [],
|
||||
"rootNamespace": "BaseGames.Enemies.Navigation",
|
||||
"references": [
|
||||
"BaseGames.Enemies",
|
||||
"PathBerserker2d"
|
||||
],
|
||||
"autoReferenced": true,
|
||||
"overrideReferences": false,
|
||||
"includePlatforms": []
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f9c0925f2c3786343b319ae4706ebf20
|
||||
AssemblyDefinitionImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
53
Assets/Scripts/Enemies/Navigation/EnemyNavAgent.cs
Normal file
53
Assets/Scripts/Enemies/Navigation/EnemyNavAgent.cs
Normal file
@@ -0,0 +1,53 @@
|
||||
using UnityEngine;
|
||||
using PathBerserker2d;
|
||||
using BaseGames.Enemies;
|
||||
|
||||
namespace BaseGames.Enemies.Navigation
|
||||
{
|
||||
/// <summary>
|
||||
/// PathBerserker2d 导航代理包装器(架构 07_EnemyModule §5)。
|
||||
/// 实现 IPathAgent 接口,使 EnemyBase 和 BD Task 无需直接依赖 PB2d 类型。
|
||||
/// PB2d API:UpdatePath(Vector2)、Stop()、TransformBasedMovement.movementSpeed、IsFollowingAPath。
|
||||
/// </summary>
|
||||
[RequireComponent(typeof(NavAgent))]
|
||||
[RequireComponent(typeof(TransformBasedMovement))]
|
||||
public class EnemyNavAgent : MonoBehaviour, IPathAgent
|
||||
{
|
||||
private NavAgent _navAgent;
|
||||
private TransformBasedMovement _movement;
|
||||
|
||||
/// <summary>正在沿路径移动时为 true。</summary>
|
||||
public bool IsMoving => _navAgent != null && _navAgent.IsFollowingAPath;
|
||||
|
||||
public event System.Action OnNavPathFailed;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
_navAgent = GetComponent<NavAgent>();
|
||||
_movement = GetComponent<TransformBasedMovement>();
|
||||
}
|
||||
|
||||
public void RequestMoveTo(Vector2 target)
|
||||
{
|
||||
_navAgent?.UpdatePath(target);
|
||||
}
|
||||
|
||||
public void StopNavigation()
|
||||
{
|
||||
_navAgent?.Stop();
|
||||
}
|
||||
|
||||
public bool IsAtDestination()
|
||||
{
|
||||
if (_navAgent == null) return true;
|
||||
// 已停止 OR 在目标线段上且不再跟随路径
|
||||
return _navAgent.IsIdle;
|
||||
}
|
||||
|
||||
public void SetSpeed(float speed)
|
||||
{
|
||||
if (_movement != null) _movement.movementSpeed = speed;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
11
Assets/Scripts/Enemies/Navigation/EnemyNavAgent.cs.meta
Normal file
11
Assets/Scripts/Enemies/Navigation/EnemyNavAgent.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 44871319d7318de40b9ac21757b69c78
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
3
Assets/Scripts/Enemies/Navigation/_Placeholder.cs
Normal file
3
Assets/Scripts/Enemies/Navigation/_Placeholder.cs
Normal file
@@ -0,0 +1,3 @@
|
||||
// Placeholder to prevent asmdef-no-scripts warning.
|
||||
namespace BaseGames.Enemies.Navigation { }
|
||||
|
||||
11
Assets/Scripts/Enemies/Navigation/_Placeholder.cs.meta
Normal file
11
Assets/Scripts/Enemies/Navigation/_Placeholder.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d27858cf5a8d193489516e0cc5bcc39a
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user