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

Плавная остановка объекта при перемещении [РЕШЕНО]

СообщениеДобавлено: 29 ноя 2011, 07:45
Receptor
В общем, нужно сделать, что бы при отпускании кнопки объект остонавливался никак вкопанный, а плавно, постепенно. Как бы скользил. Как это проще сделать? Желательно на Яве. Спасибо.

П.С. Пытался понять как в стандартных скриптах (3d person controller), но так и не врубился.

Re: Плавная остановка объекта при перемещении

СообщениеДобавлено: 29 ноя 2011, 08:04
Order
Перевести объект на физику проще всего, или открыть учебник физики, почитать про скорость и ускорение, трение и тп и сделать формулу движения в скрипте.

Re: Плавная остановка объекта при перемещении

СообщениеДобавлено: 29 ноя 2011, 12:00
Левш@
Для этого не обяз. использовать физику, зависит от целей.
Иногда можно так:
Синтаксис:
Используется javascript
if (!Input.GetKey (w) && speed > 0)
    speed -= 0.01;

Re: Плавная остановка объекта при перемещении

СообщениеДобавлено: 29 ноя 2011, 14:25
Receptor
Левша, наверное это оно самое. Не могу проверить, ругается, мол пофиксить скрипт надо. Я просто добавил твою строчку в свой код. Где speed назначил значением координат передвижения объекта по оси Z. Или я что-то нитак понял? Мне нужно, что бы была переменная, которая, грубо говоря, при действии каком-либо набирала значение от 0 до 10 например, при этом набирала в геометрической прогресси (или как это правильно), с уксорением в общем. И при завершении действие обратно от 10 до 0 возвращалась. Как-то так =) Хотя я может не правильно понимаю, что мне нужно


Запускается, но не работает:

Синтаксис:
Используется javascript
var moving : Transform;
var speed = 1;
function Update () {
if (!Input.GetKey ("w") && speed > 0)
{
speed -= 0.1;
moving.Translate (0, 0, speed);
}
}


Что не так делаю?

Re: Плавная остановка объекта при перемещении

СообщениеДобавлено: 29 ноя 2011, 15:52
Receptor
Получилось. А именно плавный старт объекта =)

А что нужно нужно добавить, что бы при прикращении действия переменная speed опустилась до 0?

вот, что у меня пока что получилось

Синтаксис:
Используется javascript
var moving : Transform;
var speed : float;
var maxspeed : float = 1;

function Update () {

moving.Translate (0, 0, speed);

if (Input.GetKey ("w"))
speed -= -0.01;
else
speed = 0;
}


переменную maxspeed подразумевал как максимальная скорость, но как ее применить грамотно, еще не смог понять. Буду рад любой помощи

Re: Плавная остановка объекта при перемещении

СообщениеДобавлено: 29 ноя 2011, 16:22
Левш@
Синтаксис:
Используется javascript
var moving : Transform;
var speed = 0.0;
var maxspeed = 10.0;

function Update () {
  if (Input.GetKey ("w") && speed < maxspeed)
    speed += 0.01;
  if (!Input.GetKey ("w") && speed > 0) {
    speed -= 0.01;
  if (speed < 0)  // чтоб обратно не поехал.
    speed = 0;
  }
moving.Translate (0, 0, speed);
}

Re: Плавная остановка объекта при перемещении

СообщениеДобавлено: 29 ноя 2011, 16:41
Receptor
Левш@, спасибо тебе огромное! Сам допёр сначала, что нужно в if добавить && speed < maxspeed, но как остановку сделать не догнал =)
И еще, все же у var speed приписать float, а то без этого определения при старте игры объект делает "рывок" =) Спасибо еще раз! То, что хотел узнать, и понять, самое главное