Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   [Box2D] У кого-нибудь есть опыт создания top-down гоночных игр на box2d? (http://www.flasher.ru/forum/showthread.php?t=145694)

Ralph_DiMarko 20.01.2011 22:13

Вот что у меня вышло
http://megaswf.com/serve/101943/
Клик мышкой добавит новый бокс на поле.
Никак не могу исправить это вхождение в друг друга при столкновении.
Вот код

Код AS3:

        // Мир
        var gravity:Vec2 = new Vec2(0, 0);
        space = new UniformSleepSpace(new AABB(0, 0, 800, 600), 20, gravity);
 
        //Машина
        carPhObj = Tools.createBox(300, 200, 100, 50, 0, 0, 0, false, Material.Steel);
        space.addObject(carPhObj);
        addChild(carPhObj.graphic);
 
        //Пол
        floorPhObj = Tools.createBox(400, 500, 800, 50, 0, 0, 0, true, Material.Steel);
        space.addObject(floorPhObj);
        addChild(floorPhObj.graphic);

Код AS3:

 
private function moveCar():void
{
        if (isLeftKeyDown) {
                carAngle --;
        }else if (isRightKeyDown) {
                carAngle ++;
        }
        if (isUpKeyDown) {
                carSpeed += carAccel;
        }else if (isDownKeyDown) {
                carSpeed -= carAccel;
        }
        var angle:Number = carAngle * Math.PI/180 ;
        var speedX:Number = carSpeed * Math.cos(angle);
        var speedY:Number = carSpeed * Math.sin(angle);
        carPhObj.px += speedX;
        carPhObj.py += speedY;
        carPhObj.setPos (carPhObj.px, carPhObj.py, angle);
        carPhObj.update();
        space.sync(carPhObj);
}


Division 20.01.2011 22:18

Ralph_DiMarko, совершенно неверный подход. Прочитай мой пост на первой странице еще раз.

3p.station 20.01.2011 22:23

пишите разработчикам - может подскажут чего

goodguy 20.01.2011 22:25

У разработчиков глухо как в танке. Я первым делом писал им (точнее на их форуме), и не один раз. Ни одного ответа не было

Ralph_DiMarko 20.01.2011 22:30

Division, премного благодарен, но признаюсь мне тяжело это все перевести в код :(
Но ну допустим неверный подход, но это же не должно влиять на столкновение, может это не машина а просто коробочка, которую я сдвинул немного.

Division 20.01.2011 22:32

Очевидно же, застряет потому что setPos вызывается. Машина - динамический объект, который подчинается законам симуляции.

Я сам спрашивал что-то на форуме, Лука ответил, не сразу правда.

Повторюсь. Чтоб было нормально - делается два круга-колеса. Они цепляются PivotJointами(или скорее PinJoint) к корпусу. И влияние осуществляется на колеса(их скорость проецируется на вектор направления колеса), а не на саму машину.

Ralph_DiMarko 20.01.2011 22:34

а.. кажется понял.
ей просто нужно придать инерцию чтобы она сама покатилась, тогда наверняка не будет такого..

3p.station 24.01.2011 15:24

а вот это как вышло ? реалистично ?
(сама скорость одинкова - не делал ее увеличение снижение, тоесть если вы не жмете вперед - то машина не едет и влево вправо тока вмсте с перед работает)

goodguy 24.01.2011 16:19

катание по льду. Примерно тоже самое у меня получалось

goodguy 07.03.2011 14:16

Вложений: 1
Два дня работы, и получилось вот что.
Есть еще проблемы с задним ходом, и величины нужно подстроить, но уже прогресс.
Думаю так же сделать все-таки 4 колеса. Будет реалистичнее

На Box2D 2.0 работает, если делаю тоже самое на Box2D 2.1 linear и angular damping работают коряво. Похоже глюк движка


Часовой пояс GMT +4, время: 20:15.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.