Вторник, 26 Ноября 2024, 07:24

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Rigidbody для новичка
VirpioДата: Суббота, 12 Октября 2013, 15:33 | Сообщение # 1
был не раз
Сейчас нет на сайте
Начал осваивать юнити и в первом же скрипте (управление персонажем) встал вопрос.
Сразу скажу изучая юнити хочу понимать абсолютно каждую мелочь в работе того или иного момента.

Итак, проблема в следующем: Создаю простейший скрипт управления персонажем ( 2Д скроллер с космическим кораблем). В каком то из уроков был предложен такой метод управления персонажем:
Код
        var direction = new Vector3(Input.GetAxis("Horizontal"),Input.GetAxis("Vertical"),0).normalized;
         player.rigidbody.AddForce(direction * acceleration);


В итоге кораблик мой двигается в нужном направлении, но не останавливается. Гравитация отключена. При увеличении значения массы и дрэга скорость корабля либо уменьшается (но остановка так же и не происходит), либо же он просто не двигается. При смене ForceMode видимых результатов не появляется вообще, корабль так же стремительно улетает за пределы экрана и двигается до бесконечности не сбавляя скорости.

Просьба игроделам рассказать принцип остановки объекта, который находится под действием силы ригидбоди. Либо же дать ссылочку на адекватный урок, где данный момент описан (сам искал, нашел только те, где описаны методы самого применения силы к объекту, но не сказано что происходит с объектом дальше)
ЛевшаДата: Суббота, 12 Октября 2013, 15:44 | Сообщение # 2
почти ветеран
Сейчас нет на сайте
Чтобы обьект тормозился, необходимо сопротивление среды (Drag, AngularDrag).

X.cor.R (Prologue)
VirpioДата: Суббота, 12 Октября 2013, 15:47 | Сообщение # 3
был не раз
Сейчас нет на сайте
Цитата Левша ()
Чтобы обьект тормозился, необходимо сопротивление среды (Drag, AngularDrag).

Написал же, что при их изменении объект начинает двигаться с меньшей скоростью, но так же не сбрасывая ее.
ЛевшаДата: Суббота, 12 Октября 2013, 16:32 | Сообщение # 4
почти ветеран
Сейчас нет на сайте
Интересно... ну тогда надо создать силу трения руками.
Применять силу с встречным направлением помноженным на текущую скорость, как то так.


X.cor.R (Prologue)
VirpioДата: Суббота, 12 Октября 2013, 22:55 | Сообщение # 5
был не раз
Сейчас нет на сайте
Вопрос снят, сорри, разбираться надо было не в работе ригидбоди, а в C#
Тянуло корабль в сторону из-за того что сила применялась в апдейте безо всяких условий.

Код

        if (Input.GetButton("Horizontal") || Input.GetButton("Vertical")) {
   var direction = new Vector3(Input.GetAxis("Horizontal"),Input.GetAxis("Vertical"),0).normalized;
         player.rigidbody.AddForce(direction * acceleration);
      }

Так стало как надо sad

Добавлено (12.10.2013, 22:55)
---------------------------------------------
Вопрос снят, сорри, разбираться надо было не в работе ригидбоди, а в C#
Тянуло корабль в сторону из-за того что сила применялась в апдейте безо всяких условий.

Код

        if (Input.GetButton("Horizontal") || Input.GetButton("Vertical")) {
   var direction = new Vector3(Input.GetAxis("Horizontal"),Input.GetAxis("Vertical"),0).normalized;
         player.rigidbody.AddForce(direction * acceleration);
      }

Так стало как надо sad
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг