Цитата:
|
Сообщение от goodguy
Вообще, что-то странное этот цикл творит. Нужно логику цикла перебрать, тут проблема явно не в бокс2д.
|
А что в нем может быть не так? Может быть мне вам подробно описать создание самого объекта?
Добавлено через 7 часов 11 минут
Не стал плодить очередную тему. Решил здесь спросить. Никак не могу понять, как работает метод SetAsBox в Box2D. Разбирал и примеры и мануалы читал, но так и не догнал.

Код AS3:
Класс для создания динамического тела
private static const RATIO:Number = 30; // 1 метр = 30 пикселей
private static const BLOCK_HALF:Number = 16; // Половина размера блока
var location:Point = new Point(320, 64);
var block:MovieClip = new BlockMovie(); // блок у которого width = 32 и height = 32
block.gotoAndStop(1);
parent.addChild(block);
var blockShapeDef:b2PolygonDef = new b2PolygonDef();
blockShapeDef.SetAsBox(BLOCK_HALF / RATIO, BLOCK_HALF / RATIO);
blockShapeDef.density = 1; // плотность
blockShapeDef.friction = 0;
blockShapeDef.restitution = 0.45;
var blockBodyDef:b2BodyDef = new b2BodyDef();
blockBodyDef.position.Set(location.x / RATIO, location.y / RATIO);
var blockBody:b2Body = PhysiVals.world.CreateBody(blockBodyDef);
blockBody.CreateShape(blockShapeDef);
blockBody.SetMassFromShapes();

Код AS3:
Класс для создания статического тела
private static const RATIO:Number = 30; // 1 метр = 30 пикселей
private static const BLOCK_HALF:Number = 32; // Половина высоты и ширины блока
var location:Point = new Point(320, 256);
var blockSprite:Sprite = new Sprite();
blockSprite.graphics.beginFill(0x28990E);
blockSprite.graphics.drawRect(0, 0, 64, 64); // блок у которого ширина = 64 и высота = 64
blockSprite.graphics.endFill();
parent.addChild(blockSprite);
var blockShapeDef:b2PolygonDef = new b2PolygonDef();
blockShapeDef.SetAsBox(BLOCK_HALF / RATIO , BLOCK_HALF / RATIO);
blockShapeDef.density = 0; // плотность
blockShapeDef.friction = 0;
blockShapeDef.restitution = 0;
var blockBodyDef:b2BodyDef = new b2BodyDef();
blockBodyDef.position.Set(location.x / RATIO, location.y / RATIO);
var blockBody = PhysiVals.world.CreateBody(blockBodyDef);
blockBody.CreateShape(blockShapeDef);
blockBody.SetMassFromShapes();
Точка регистрации у мувиклипа находится посередине, т.е. (X = -16, Y = -16). Почему образуется
такой большой разрыв между статическим и динамическим телом?
Добавлено через 29 часов 57 минут
Ну что так и не кто не подскажет?