AI система наведения

Общие вопросы о Unity3D

AI система наведения

Сообщение Friend123 11 мар 2012, 23:45

Господа, понимаю, что подобные темы поднимались, но ответа на свой вопрос не нашел. А проблема такая: есть объект-противник, есть объект-игрок, нужно сделать так, чтобы противник стрелял по игроку только тогда, когда тот в прицеле грубо говоря. Я так понимаю - тут работа с углами. У меня щас получается, что противник стреляет туда, откуда игрок уже улетел, возможно надо еще делать поправку на скорость. Вот наковырял такой код:
Синтаксис:
Используется csharp
void FixedUpdate () {          
               
        float DistanceToPlayer = Vector3.Distance(enemy.position, player.position); // Дистанция до цели
               
        if(DistanceToPlayer <= 500){
                       
                Vector3 enemyDirection = transform.TransformDirection(Vector3.forward);
                Vector3 DirectionToPlayer = player.position - enemy.position;
                float EnemyPlayerAngle = Vector3.Angle(DirectionToPlayer, enemyDirection);
                       
                Quaternion rot = Quaternion.LookRotation(player.position - enemy.position);
                enemy.rotation = Quaternion.Slerp(enemy.rotation, rot, rotationSpeed * Time.deltaTime);        
                               
                if(DistanceToPlayer <= 200){                                                   
                        // Если получили нужный угол прицела, то стреляем!
                        if (EnemyPlayerAngle < 10.0f){
                                // Стреляем
                        }      
                }
        }
}
 
Аватара пользователя
Friend123
Старожил
 
Сообщения: 701
Зарегистрирован: 26 фев 2012, 22:12
Откуда: Тверь
  • ICQ

Re: AI система наведения

Сообщение waruiyume 12 мар 2012, 00:01

Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: AI система наведения

Сообщение Woolf 12 мар 2012, 00:53

"Тупой" НПС

1. Вычисляем вектор прицела НПС.
2. Вычисляем вектор на игрока
3. Вычисляем угол между векторами. Если он меньше некого значения (точность прицела) - игрок в прицеле, иначе разворот на игрока

"Умный" нпс
1. Вычисляем вектор прицела НПС.
2. Исходя из скорости игрока, направления его движения и скорости снаряда рассчитываем будущие координаты игрока
3. далее алгоритм 1 пункт 2, только вместо игрока - рассчитанные координаты

Элементарная школьная математика )
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: AI система наведения

Сообщение Friend123 12 мар 2012, 08:10

О, благодарю за подсказки. Вечером буду ковыряться...
Аватара пользователя
Friend123
Старожил
 
Сообщения: 701
Зарегистрирован: 26 фев 2012, 22:12
Откуда: Тверь
  • ICQ


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 22