Вопрос по CharacterController

Программирование на Юнити.

Вопрос по CharacterController

Сообщение Berenold 30 янв 2012, 18:44

Доброго времени суток.
Есть контролер для НПС
Синтаксис:
Используется csharp
void NpsMove()
{
        if (controller.isGrounded) // Проверяем находится ли НПС на, земде если да тогда
        {
            moveDirection = new Vector3(0, 0, myHorisontal); // Задаем вектор движения
            moveDirection = transform.TransformDirection(moveDirection);
            moveDirection *= nps.MoveSpeed; // Задаем скорость
            if (npsJump && !npsJumpeng)
            {
                moveDirection.y = jumpSpeed;
                npsJumpeng = true;
                npsJump = false;
             }
        }
        moveDirection.y -= gravity * Time.deltaTime;     // Включаем гравитацию
        controller.Move(moveDirection * Time.deltaTime); // Смещаем ГО
}
 

Мне нужно реализовать следующее:
НПС движется с нормальной скоростью в строну игрока. Когда достигает расстояния допустимое для прыжка НПС прыгает на игрока.

111.jpg


Пробовал делать так
Синтаксис:
Используется csharp
if(Vector3.Distance(curentNpsTarget.transform.position, this.transform.position) > minTargetDistance) // НПС находится дальше чем минимальное расстояние до игрока
{
       if(Vector3.Distance(curentNpsTarget.transform.position, this.transform.position) <= jumpDistance) // НПС достиг расстояния для прыжка
       {
                this.transform.position = curentNpsTarget.transform.position; // Перемещение НПС к цели
       }
}
 


Недостаток такого прыжка в том, что нету самого прыжка. Я просто перемещаю НПС к игроку а хотелось бы что бы был сам факт прыжка.

Думал сделать так:
Когда НПС достиг расстояния для прыжка увеличить скорость передвижения в 2-3 раза и прыгнуть.
Но тут задача. Как рассчитать скорость движения так, что бы прыжок четно покрыл расстояние до цели? как я показывал на картинке выше.
Заранее благодарен за ответы.
У вас нет доступа для просмотра вложений в этом сообщении.
Невозможное возможно!
Аватара пользователя
Berenold
UNITрон
 
Сообщения: 151
Зарегистрирован: 31 июл 2010, 01:44
Откуда: Киев
  • Сайт

Re: Вопрос по CharacterController

Сообщение Order 30 янв 2012, 19:53

Копайте в сторону параболы, дошел на расстояние прыжка , переключил управление на вычисление траектории прыжка. Зная точку старта и точку приземления рассчитывается парабола , тогда точно в нужное место перепрыгнет, если конечно точкой поставить игрока, то будет типа самонаведения.
Добавить rusorder в Skype , _juc4you@mail.ru ;
Платные консультации, программирование ваших проектов Unity3d,C#,IOS,Android.
Скрытый текст:
_ttp://www.youtube.com/watch?v=1m2qTnatSjM&list=UUjcKNvONEUHCILG7QrX1NFg
Order
Старожил
 
Сообщения: 805
Зарегистрирован: 21 фев 2010, 10:34

Re: Вопрос по CharacterController

Сообщение Berenold 30 янв 2012, 20:02

Order писал(а):Копайте в сторону параболы, дошел на расстояние прыжка , переключил управление на вычисление траектории прыжка. Зная точку старта и точку приземления рассчитывается парабола , тогда точно в нужное место перепрыгнет, если конечно точкой поставить игрока, то будет типа самонаведения.

Спасибо натолкнули на мысль. Примерно придумал как это должно быть, сейчас буду делать))
Невозможное возможно!
Аватара пользователя
Berenold
UNITрон
 
Сообщения: 151
Зарегистрирован: 31 июл 2010, 01:44
Откуда: Киев
  • Сайт


Вернуться в Скрипты

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

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