Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   [Box2D] Создание тел в Box2D (http://www.flasher.ru/forum/showthread.php?t=166400)

JokerDen 02.09.2011 17:15

Создание тел в Box2D
 
Начал осваивать физический движок Box2D для Флеша. В версии движка 2.0 мне без проблем удалось создать тело. Но когда решил реализовать в версии 2.1, то ничего не получилось -- никак не могу освоиться с фикстурами. Помогите кто-нибудь по аналогии старого движка сделать объект в новой версии.

Код AS3:

var wall:b2Body;
var wallDef:b2BodyDef = new b2BodyDef();
var wallShapeDef:b2PolygonDef = new b2PolygonDef();
var wallShape:Sprite = new Sprite();
 
wallShape.graphics.beginFill(color, 1);
wallShape.graphics.drawRect( -10, -200 , 20, 400);
wallShape.graphics.endFill();
wallShape.x = 10;
wallShape.y = 200;
addChild(wallShape);
wallDef.position.Set(10 / 30, 200/ 30);
wallDef.userData = wallShape;
wallShapeDef.SetAsBox(10 / 30, 200 / 30);
wall = world.CreateBody(wallDef);
wall.CreateShape(wallShapeDef);
wall.SetMassFromShapes();


goodguy 02.09.2011 20:56

Вот пример создания простого статического тела в 2.1а
Код AS3:

public static function create(x:int, y:int, w:int, h:int, world:b2World, ratio:Number, centered:Boolean = false):void {
                        var shape:                                b2PolygonShape        = new b2PolygonShape();
                        var bodyDef:                        b2BodyDef                = new b2BodyDef();
                        var body:                                b2Body;
                        var fixture:                        b2FixtureDef        = new b2FixtureDef();
                        fixture.shape                                                        = shape;
                        if (centered) bodyDef.position.Set(x / ratio, y / ratio);
                        else bodyDef.position.Set((x + w / 2) / ratio, (y + h / 2) / ratio);
                        shape.SetAsBox(w / 2 / ratio, h / 2 / ratio);
                        body = world.CreateBody(bodyDef);
                        body.CreateFixture(fixture);
                }



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

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