Страница 1 из 1

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

СообщениеДобавлено: 11 мар 2012, 23:45
Friend123
Господа, понимаю, что подобные темы поднимались, но ответа на свой вопрос не нашел. А проблема такая: есть объект-противник, есть объект-игрок, нужно сделать так, чтобы противник стрелял по игроку только тогда, когда тот в прицеле грубо говоря. Я так понимаю - тут работа с углами. У меня щас получается, что противник стреляет туда, откуда игрок уже улетел, возможно надо еще делать поправку на скорость. Вот наковырял такой код:
Синтаксис:
Используется 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){
                                // Стреляем
                        }      
                }
        }
}
 

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

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

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

СообщениеДобавлено: 12 мар 2012, 00:53
Woolf
"Тупой" НПС

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

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

Элементарная школьная математика )

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

СообщениеДобавлено: 12 мар 2012, 08:10
Friend123
О, благодарю за подсказки. Вечером буду ковыряться...