Bezi回来了
This commit is contained in:
@@ -79,6 +79,49 @@ namespace Cielonos.MainGame
|
||||
|
||||
return enemiesInRadius;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取所有可见敌人
|
||||
/// </summary>
|
||||
public List<CharacterBase> GetVisibleEnemies(float radius = 50f)
|
||||
{
|
||||
List<CharacterBase> result = new List<CharacterBase>();
|
||||
List<CharacterBase> enemies = GetEnemiesInRadius(Player.transform.position, radius);
|
||||
|
||||
foreach (CharacterBase enemy in enemies)
|
||||
{
|
||||
if (enemy == null || enemy.statusSm.isDead) continue;
|
||||
|
||||
Vector3 screenPos = Player.viewSc.playerCamera.WorldToScreenPoint(enemy.centerPoint.position);
|
||||
bool isInScreen = screenPos.z > 0 &&
|
||||
screenPos.x > 0 && screenPos.x < Screen.width &&
|
||||
screenPos.y > 0 && screenPos.y < Screen.height;
|
||||
|
||||
if (isInScreen)
|
||||
{
|
||||
result.Add(enemy);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取按屏幕X坐标从左到右排序的可见敌人列表
|
||||
/// </summary>
|
||||
public List<CharacterBase> GetVisibleEnemiesSortedByScreenX(float radius = 50f)
|
||||
{
|
||||
List<CharacterBase> visibleEnemies = GetVisibleEnemies(radius);
|
||||
|
||||
visibleEnemies.Sort((a, b) =>
|
||||
{
|
||||
Vector3 screenA = Player.viewSc.playerCamera.WorldToScreenPoint(a.centerPoint.position);
|
||||
Vector3 screenB = Player.viewSc.playerCamera.WorldToScreenPoint(b.centerPoint.position);
|
||||
return screenA.x.CompareTo(screenB.x);
|
||||
});
|
||||
|
||||
return visibleEnemies;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user