Показать сообщение отдельно
Старый 07.07.2012, 14:03
HardCoder вне форума Посмотреть профиль Отправить личное сообщение для HardCoder Найти все сообщения от HardCoder
  № 3  
Ответить с цитированием
HardCoder
 
Аватар для HardCoder

блогер
Регистрация: Apr 2011
Сообщений: 583
Записей в блоге: 2
vizgl, спасибо за ответ. Я видел эту статью раньше, но мне тоже не понравилась идея.
Как я решил проблему. Просто создал тело (прямоугольник, дальше конвеер), и начал "слушать" столкновения других тел с этим прямоугольником. Если что-то столкнулось с конвеером, то придавал этому (другому телу) силу, чтобы его уносило в сторону:
Вот отрывок из класса унаследованного от b2ContactListener. Кто работал с Box2D должен знать что это - объяснять не буду:
Код AS3:
override public function BeginContact(contact:b2Contact):void {
	var bodyA:b2Body = contact.GetFixtureA().GetBody();
	var bodyB:b2Body = contact.GetFixtureB().GetBody();
	var dataA:Object = bodyA.GetUserData();
	var dataB:Object = bodyB.GetUserData();
	if (bodyA && bodyB) {
		if (dataA == "conveyer") {
			bodyB.GetLinearVelocity().x += 2;
		} else if (dataB == "conveyer") {
			bodyA.GetLinearVelocity().x += 2;
		}
	}
}
Это всего лишь суть. Конечно, можно доработать и создать разную скорость и разные направления для движения ленты конвеера.
__________________
Я мало чего умею, но зато хорошо умею учиться...