MusicBeat
This commit is contained in:
@@ -16,24 +16,24 @@ namespace Cielonos.MainGame
|
||||
Farthest
|
||||
}
|
||||
|
||||
public List<CharacterBase> activeEnemiesList;
|
||||
public List<Enemy> activeEnemiesList;
|
||||
|
||||
/// <summary>
|
||||
/// 敌人从活跃列表中移除时触发(即敌人死亡/离场)。
|
||||
/// 参数为被移除的敌人实例。
|
||||
/// </summary>
|
||||
public event Action<CharacterBase> OnEnemyRemoved;
|
||||
public event Action<Enemy> OnEnemyRemoved;
|
||||
|
||||
public EnemySubmodule(CombatManager owner) : base(owner)
|
||||
{
|
||||
activeEnemiesList = new List<CharacterBase>();
|
||||
activeEnemiesList = new List<Enemy>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 将敌人从活跃列表中移除并触发 OnEnemyRemoved 事件。
|
||||
/// 由 Automata.Die() 调用,替代直接操作 activeEnemiesList。
|
||||
/// </summary>
|
||||
public void RemoveEnemy(CharacterBase enemy)
|
||||
public void RemoveEnemy(Enemy enemy)
|
||||
{
|
||||
if (!activeEnemiesList.Remove(enemy)) return;
|
||||
OnEnemyRemoved?.Invoke(enemy);
|
||||
@@ -47,10 +47,10 @@ namespace Cielonos.MainGame
|
||||
activeEnemiesList.Clear();
|
||||
}
|
||||
|
||||
public List<CharacterBase> GetEnemiesInRadius(Vector3 origin, float radius, SortingType sortingType = SortingType.Nearest)
|
||||
public List<Enemy> GetEnemiesInRadius(Vector3 origin, float radius, SortingType sortingType = SortingType.Nearest)
|
||||
{
|
||||
List<CharacterBase> enemiesInRadius = new List<CharacterBase>();
|
||||
foreach (CharacterBase enemy in activeEnemiesList)
|
||||
List<Enemy> enemiesInRadius = new List<Enemy>();
|
||||
foreach (Enemy enemy in activeEnemiesList)
|
||||
{
|
||||
float enemyRadius = enemy.collisionSc.useCharacterController
|
||||
? enemy.collisionSc.characterController.radius
|
||||
@@ -78,12 +78,12 @@ namespace Cielonos.MainGame
|
||||
/// <summary>
|
||||
/// 获取所有可见敌人
|
||||
/// </summary>
|
||||
public List<CharacterBase> GetVisibleEnemies(float radius = 50f)
|
||||
public List<Enemy> GetVisibleEnemies(float radius = 50f)
|
||||
{
|
||||
List<CharacterBase> result = new List<CharacterBase>();
|
||||
List<CharacterBase> enemies = GetEnemiesInRadius(Player.transform.position, radius);
|
||||
List<Enemy> result = new List<Enemy>();
|
||||
List<Enemy> enemies = GetEnemiesInRadius(Player.transform.position, radius);
|
||||
|
||||
foreach (CharacterBase enemy in enemies)
|
||||
foreach (Enemy enemy in enemies)
|
||||
{
|
||||
if (enemy == null || enemy.statusSm.isDead) continue;
|
||||
|
||||
@@ -104,9 +104,9 @@ namespace Cielonos.MainGame
|
||||
/// <summary>
|
||||
/// 获取按屏幕X坐标从左到右排序的可见敌人列表
|
||||
/// </summary>
|
||||
public List<CharacterBase> GetVisibleEnemiesSortedByScreenX(float radius = 50f)
|
||||
public List<Enemy> GetVisibleEnemiesSortedByScreenX(float radius = 50f)
|
||||
{
|
||||
List<CharacterBase> visibleEnemies = GetVisibleEnemies(radius);
|
||||
List<Enemy> visibleEnemies = GetVisibleEnemies(radius);
|
||||
|
||||
visibleEnemies.Sort((a, b) =>
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user