![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: May 2007
Сообщений: 46
|
Добрый вечер!
Есть небольшая проблемка: мой объект движется по воздействию на него силы, но мне нужно равномерное движение, движение без ускорения. Я пытаюсь сделать это вот таким образом, но получаю рывки (они и понятно): case 39 : if (LevelVars.player.GetLinearVelocity().x <= 5) { direction.Set((250),0); LevelVars.player.WakeUp(); LevelVars.player.ApplyForce(direction, LevelVars.player.GetPosition()); } else if (LevelVars.player.GetLinearVelocity().x >= 5) { LevelVars.player.ApplyForce(new b2Vec2((LevelVars.player.GetMass() * 0.8), 0), LevelVars.player.GetPosition()); } break; |
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Через ApplyImpulse() только.
public function update():void { _speed = 3; _direction = _body.GetPosition().Copy(); _direction.Subtract(_clickPoint); // движение к точке где произошел щелчок _direction.Normalize(); _direction.Multiply(_speed); _direction.NegativeSelf(); _body.ApplyImpulse(_direction, _body.GetPosition()); // применяем импульс } |
|
|||||
|
Регистрация: May 2007
Сообщений: 46
|
Спасибо большое. Сейчас попробую. Но я забыл указать то, что это движение происходит по нажатию на клавиши с клавиатуры. Импульс подойдет для продолжительного движения?
|
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Ну там же нормальизация вектора. Т.е. по сути пофиг какова продолжительность, скорость все равно не будет больше 3.
Хотя такую задачу я бы лучше реализовал через SetPosition() |
|
|||||
|
Регистрация: May 2007
Сообщений: 46
|
Видимо, это Box2D версией старше, чем 2.0.2)
|
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
я про 2.1а, в 2.0.2 был метод SetXForm()
|
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Кстати, да! Что-то он у меня вообще из головы вылетел.
|
|
|||||
|
Регистрация: May 2007
Сообщений: 46
|
Есть некоторые проблемы при использовании линейной скорости. Если во время прыжка я буду нажимать на клавиши движения, чтобы стабилизировать траекторию падения в нужную мне сторону, то тогда эта траекторию сильно искажается в пользу горизонтального движения. Как будто бы тело реактивное и у него в этот момент включают турбину
![]() |
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Судя по всему там скорости суммируются. Нужно так же использовать SetLinearDamping(), чтобы тело замедлялось
|
![]() |
![]() |
Часовой пояс GMT +4, время: 10:41. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| Box2d движение , Box2d скорость. |
| Опции темы | |
| Опции просмотра | |
|
|