2015-10-26 4 views
0

В моей игре игрок может запустить оружие, которое запустит снаряд, который автоматически нацелит противника, ближайшего к определенному объекту. Однако как я могу остановить снаряды от таргетинга на моего собственного игрока? Есть ли способ пометить всех других игроков определенным тегом, оставив моего собственного игрока с другим тегом? Игроки запускаются как сборники, когда начинается игра.Как настроить таргетинг на всех других игроков, кроме вас самих?

+0

Если снаряд нацеливает объекты с тегом «Враг» (например), он не будет нацелен ни на что другое. – user3071284

ответ

1

При запуске снаряда дайте ссылку на игрока, который выстрелил в него. Затем, вычисляя ближайшего игрока, проверьте, совпадает ли ближайший с тем, кто его застрелил. Если он есть, выберите второй ближайший.

public class Projectile : MonoBehaviour 
{ 

    public Player player = null; 
    private Player target = null; 

    private Player GetClosestPlayer(IList listOfPlayers) 
    { 
     Player closestPlayer = ...; // use your algorithm method here 

     if (player != null && player == closestPlayer) 
     { 
      // copy listOfPlayers and remove closestPlayer from it 
      return GetClosestPlayer(copyOfListOfPlayersWithoutPreviousClosest); 
     } 

     return closestPlayer; 

    } 

    void Update() 
    { 
     if (target != null) 
      // steer to target 
     else 
      target = GetClosestPlayer(); 
    } 

}