У меня есть код того, что происходит, когда враг сталкивается с игроком, используя твердое тело на игроке и нажимая триггер is на коллайдере в инспекторе. Когда игрок попадает во врага, количество жизней уменьшается. Теперь у меня есть пустой игровой объект (дорожка), который имеет твердое тело и отмечен триггером на коробчатом коллайдере, к которому движется один враг. Как только враг доберется до триггера, он должен вернуться к другому пустому игровому объекту (backTrack), чтобы создать впечатление, что он снова возвращается. В любой момент, если игрок ударяет врага, количество жизней уменьшается на 1, и враг возрождается в начальной позиции. Моя проблема в том, что я не могу заставить его различать столкновение с игроком и отслеживание, потому что в ту минуту, когда враг попадает в трек, он делает то, что следует делать, если игрок ударил врага, и враг возрождается в начальной позиции. Вот мой код:
private bool triggered = false;
public GameObject track1;
void moveBackTrack(){
float move1 = moveSpeed * Time.deltaTime;
transform.position = Vector3.MoveTowards (transform.position, backTrack.position, move1);
}
void OnTriggerEnter(Collider col)
{
if (!triggered)
{
triggered = true;
if (col.gameObject = track1) {
moveBackTrack ();
} else {
Destroy (gameObject);
print ("Collision Enter: " + col.name);
GameManager.Instance.lives -= 1;
GameManager.Instance.setLivesText ();
GameManager.Instance.SpawnTrackEnemy ();
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/362 ... ith-differ