Добрый день, такая беда. У меня есть префаб противника, состоящий из нескольких частей. В одной из частей "пустышке" находится лист с теми игроками, которых противник заметил, заполняется он при соприкосновении коллайдера с этим игроком. Как только прикосновение окончилось - первый элемент из списка должен быть удален. НО(!) проблема в том, что скажем, у 5ти префабов противника одновременно срабатывает этот тригер при соприкосновении с игроком и все поля в классе внезапно оказываются общими, несмотря на мои попытки присвоить для каждого объекта свои собственные поля. Что я делаю не так? Ниже пример кода.
public class ScanSphere : MonoBehaviour
{
public List<GameObject> players;
public ScanSphere scan;
private GameObject player1;
private GameObject player2;
private int i;
private void Awake()
{
scan = this.gameObject.GetComponent<ScanSphere>();
scan.player1 = GameObject.FindGameObjectWithTag("Player1");
scan.player2 = GameObject.FindGameObjectWithTag("Player2");
scan.players = new List<GameObject>();
}
void OnTriggerEnter(Collider coll)
{
GameObject player = coll.gameObject;
if (player.tag == "Player1")
{
scan.players.Add(player1);
}
if (player.tag == "Player2")
{
scan.players.Add(player2);
}
}
void OnTriggerExit(Collider coll)
{
GameObject player = coll.gameObject;
if (player.tag == "Player1")
{
scan.players.Remove(player1);
}
if (player.tag == "Player2")
{
scan.players.Remove(player2);
}
}
}
По итогу работы скрипта в логах можно обнаружить следующую закономерность.
То есть каждый предыдущий противник берет на себя все срабатывания новых. Я же ожидал иного результата, хотел получить:
- первый противник коснулся игрока, List 1= 1;
- второй противник коснулся игрока, List 2 = 1 и List1 = 2;
- третий противник коснулся игрока, List3 = 1 List2= 2 List3 = 3
То есть каждый предыдущий противник берет на себя все срабатывания новых. Я же ожидал иного результата, хотел получить:
- List1 = 1
- List2 = 2;
- List3 = 3;
Все противники создаются в отдельном классе через Instantiate из одного и того же префаба (клоны).
Принятый ответ
я делал так что, каждый триггер был у каждого игрока и на нем висел этот лист. Получится так что у каждого имеется свой лист и свой триггер.
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
N7 Molot
5 лет назад
0
я делал так что, каждый триггер был у каждого игрока и на нем висел этот лист. Получится так что у каждого имеется свой лист и свой триггер.
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.