|
|
|||||
Регистрация: Dec 2008
Адрес: Одесса
Сообщений: 129
|
Движение авто (top-down)
Добрый вечер!
Подскажите пожалуйста как правильно задать угловую скорость? Т.е. чтобы объект не сам поворачивался, а сменил траекторию движения. Читал на сайте emanuele статью про машину, но там как то слишком сложно все сделано, т.к. у него добавлены 4 колеса и т.д., хочется понять как оно работает. Пробовал через объект на месте просто повернулся на заданный угол. Попробовал через объект стал крутится с заданной скоростью. Я так понимаю нужно через тот же ApplyForce, только рассчитать векторы х и у, но как не знаю. Прошу помощи. Код package { import flash.display.Sprite; import flash.events.Event; import flash.events.KeyboardEvent; import flash.events.MouseEvent; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; public class Main extends Sprite { private var world:b2World = new b2World(new b2Vec2(0, 0), true); private var world_scale:int = 30; private var boxBody:b2Body; private var body_def:b2BodyDef; public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); debug_draw(); draw_box(200, 200, 50, 100); stage.addEventListener(Event.ENTER_FRAME, onEnterFrame); stage.addEventListener(KeyboardEvent.KEY_DOWN, KD); } private function onEnterFrame(e:Event):void { world.Step(1 / 30, 10, 10); world.ClearForces(); world.DrawDebugData(); } private function KD(e:KeyboardEvent):void { switch (e.keyCode) { case 37: break; break; case 39: break; break; case 38: boxBody.ApplyForce(new b2Vec2(0, -10), boxBody.GetPosition()); break; break; case 40: boxBody.ApplyForce(new b2Vec2(0, 10), boxBody.GetPosition()); break; break; } } private function debug_draw():void { var debug_draw:b2DebugDraw = new b2DebugDraw(); var debug_sprite:Sprite = new Sprite(); addChild(debug_sprite); debug_draw.SetSprite(debug_sprite); debug_draw.SetDrawScale(world_scale); debug_draw.SetFlags(b2DebugDraw.e_shapeBit); world.SetDebugDraw(debug_draw); } private function draw_box(px:int, py:int, w:int, h:int):void { body_def = new b2BodyDef(); body_def.position.Set(px / world_scale, py / world_scale); body_def.type = b2Body.b2_dynamicBody; var my_box:b2PolygonShape = new b2PolygonShape(); my_box.SetAsBox(w / 2 / world_scale, h / 2 / world_scale); var my_fixture:b2FixtureDef = new b2FixtureDef(); my_fixture.shape = my_box; boxBody = world.CreateBody(body_def); boxBody.CreateFixture(my_fixture); } } } |
Часовой пояс GMT +4, время: 15:37. |
|
« Предыдущая тема | Следующая тема » |
Теги |
box2d , car , vehicle , движение автомобиля |
|
|