![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jun 2011
Сообщений: 8
|
Доброго времени суток!
Пишу игру, в которой нужно стреляться "снарядами", гравитации нет, запускаются они с помощью ApplyImpulse. Тела при взаимодействии с другими телами (как статическими, так и динамическими), должны отскакивать. Так вот - перед выстрелом хочу прорисовывать траекторию полета снаряда, причем вплоть до 2 - 3 столкновений с другими объектами, дальше рисовать не нужно. Сразу предупрежу - рассчитывать все ручками - гиблое дело, т.к. уровни чрезвычайно разнообразны. Отрисовывать в фоне за пределами сцены - слишком медленно. Можно ли это устроить средствами Box2d? Заранее благодарен! |
|
|||||
|
[+4 07.04.12]
[+1 20.01.12] Регистрация: Nov 2009
Адрес: Украина, Славутич
Сообщений: 263
|
а что мешает запустить "пулю" и отрисовать её путь? по моему самый простой способ
|
|
|||||
|
Регистрация: Mar 2010
Сообщений: 44
|
Можно, делаешь фейковый снаряд, и вместо запуска прорисовываешь траекторию как обычно. Кол-вом интераций регулируеш длину траектории. Как то так...
var _traectorySprite:Sprite = new Sprite(); _traectorySprite.graphics.clear(); _traectorySprite.graphics.lineStyle(1,0x000000); _traectorySprite.graphics.beginFill(0xff0000); for (var i:int=1; i<=150; i++) { world.Step(1/30,10,10); _traectorySprite.graphics.drawCircle(myBullet.GetPosition().x*worldScale, myBullet.GetPosition().y*worldScale,2); world.ClearForces(); } _traectorySprite.graphics.endFill(); world.DestroyBody(myBullet); Цитата:
А ну и имхо, я бы делал выстрел через SetLinearVelocity а не импульсом Последний раз редактировалось zmeevolk; 22.02.2012 в 21:18. |
|
|||||
|
[+4 07.04.12]
[+1 20.01.12] Регистрация: Nov 2009
Адрес: Украина, Славутич
Сообщений: 263
|
делать надо точно так же как и стреляешь и точно таким же снарядом иначе при рикошете не совпадет тангенсальный импульс и траектория будет неправильной
Добавлено через 1 минуту SetLinearVelocity это то же самое что импульс в центр масс |
|
|||||
|
Регистрация: Mar 2010
Сообщений: 44
|
Цитата:
Мне всегда казалось что SetLinearVelocity резко меняет скорость тела, а импульс или форс нет. Хотя для тела в состоянии покоя может и разницы нет. |
|
|||||
|
[+4 07.04.12]
[+1 20.01.12] Регистрация: Nov 2009
Адрес: Украина, Славутич
Сообщений: 263
|
Цитата:
public function ApplyImpulse(impulse:b2Vec2, point:b2Vec2) : void{ if (m_type != b2_dynamicBody) { return; } if (IsAwake() == false) { SetAwake(true); } //m_linearVelocity += m_invMass * impulse; m_linearVelocity.x += m_invMass * impulse.x; m_linearVelocity.y += m_invMass * impulse.y; //m_angularVelocity += m_invI * b2Cross(point - m_sweep.c, impulse); m_angularVelocity += m_invI * ((point.x - m_sweep.c.x) * impulse.y - (point.y - m_sweep.c.y) * impulse.x); } m_invMass это 1 поделить на массу |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:10. |
|
|
« Предыдущая тема | Следующая тема » |
|
|