Форум Flasher.ru

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

Maximer 03.09.2010 00:11

QuickBox2D не корректно работает сенсор
 
В общем идея такая, есть много статических и пару динамических тел, мне нужно отследить событие, когда сенсор пересекается с этими телами, пока в роли сенсора создаю круг, который привязан к мышке(просто каждый раз присваиваю координаты мышки, координатам круга).
Пока пытаюсь отследить так(цикл находится с функции, которая срабатывает на событие QuickContacts.PERSIST):

Код AS3:

for (var i:int = 0; i < allPhysicsObject_arr.length; i++) 
{
        if ( contacts.isCurrentContact( _moovingActiveObject, allPhysicsObject_arr[i]))
        {
                _moovingActiveObject.userData.alpha = .5;
        }
}

allPhysicsObject_arr - это массив со всеми телами, их пока 49
_moovingActiveObject - это круг-сенсор

Аналогичный цикл находится в функции, которая срабатывает на событие QuickContacts.REMOVE(меняет альфу на 1), однако работает не корректно, иногда срабатывает иногда нет... В чем дело не знаю, пробовал ставить isBullet: true, не помогло.

Если у кого есть мысли, как это исправить или как отловить событие, когда одно определенное тело соприкасается с другим/другими, то буду рад выслушать.

p.s QuickBox2D это оболочка для Box2D 2.0.2


upd Проблему вроде решил, перед тем как менять положение круга, надо было "обнулять" данные:
Код AS3:

                        _moovingActiveObject.body.SetAngularVelocity(0);
                        _moovingActiveObject.body.SetLinearVelocity(new b2Vec2());
                        _moovingActiveObject.bodyDef.angle = 0;
                        _moovingActiveObject.bodyDef.angularDamping = 0;
                        _moovingActiveObject.bodyDef.linearDamping = 0;
 
                        _moovingActiveObject.x = container.mouseX / SCALE;
                        _moovingActiveObject.y = container.mouseY / SCALE;



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

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