Держись подальше от цели - PullRequest
0 голосов
/ 20 марта 2011

У меня есть массив, который заполнен всеми объектами с тегом Enemy.Когда один враг приближается к другому врагу, он должен держаться подальше от этого врага или обходить его.

Это то, что у меня сейчас есть:

foreach(Transform enemy in enemies){
    if(enemy == this.transform) continue;

    enemyPos = enemy;
    float enemyDistance = Vector3.Distance(enemy.transform.position, transform.position);

    if(enemyDistance < 8){
        transform.RotateAround (enemyPos.position, Vector3.up, 360 * Time.deltaTime);
    }
}

Если враги подойдут достаточно близкодруг с другом, они будут кружить вокруг друг друга.Также попытался использовать 2 триггера куба, потому что когда вражеский объект касается одного из кубов, вражеский куб повернет от него.Также пробовал разные углы.Но не повезло :(

Я все еще пытаюсь найти решение. Но если у вас есть лучшее представление об этом, ваша помощь очень ценится:)

Заранее спасибо !!!

Ответы [ 2 ]

2 голосов
/ 20 марта 2011

У вас есть несколько движущихся объектов, и некоторые из них могут стоять на пути других объектов. Я хотел бы предложить вам отложить перемещение всех тех объектов, у которых перед собой есть препятствие. Когда все свободно движущиеся объекты перемещаются, попробуйте переместить все остальные, повторив процедуру, потому что в процессе некоторые объекты могут стать свободными. По сути, вы перебираете список еще не перемещенных объектов, пока в списке нет изменений.

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

1 голос
/ 21 марта 2011

Следующая статья может вам помочь.

Короче говоря, ваш агент "отталкивает" друг друга, когда они находятся на заданном расстоянии.Это концепция «разведения» в стаде.Что действительно интересно, так это то, что у вас может быть поворот, который зависит от расстояния (то есть другой агент, находящийся очень близко, означает, что вам нужно повернуть сильно), и что вы можете взаимодействовать с несколькими агентами.

в одномsite, this может помочь вам найти игрока.Объедините два метода, и у вас есть агенты, которые пытаются поймать игрока, избегая при этом других агентов.

Относительно Гийома

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...