Попытка генерировать атаку с использованием меча, используя Box2D в Citrus Engine
Последние пару дней я бился головой о стену, пытаясь понять, как правильно расширять объекты Box2DPhysicsObjects CitrusEngine для создания моих пользовательских объектов. Моя цель - создать такое поведение: пример желаемого поведения.
Это сделано для того, чтобы смоделировать моего героя в направлении, определяемом с помощью входных данных, когда он размахивает мечом для атаки. Меч "спит", пока не активируется состояние атаки.
Я думаю, что у меня есть фундаментальное недоразумение о том, как правильно использовать Box2D (особенно суставы). Если бы кто-то мог указать мне правильное направление, я был бы вечно благодарен. Я не могу предоставить свой текущий код, потому что он стал неработоспособным.
1 ответ
Реализация, подобная приведенной выше, будет иметь очень плохую производительность и, вероятно, будет туннелировать практически в любой ситуации. Поэтому решение состоит в том, чтобы добавить датчик с формой воронки и добавить соединение между этим датчиком и моим героем. Реализация:
override protected function createShape():void{
var radius:Number = 4;
var vertices:Vector.<b2Vec2> = new Vector.<b2Vec2>();
vertices.push(new b2Vec2(0,0));
for (var i:int = 0; i < 7; i++) {
var angle:Number = i / 6.0 * .5* Math.PI;
vertices.push(
new b2Vec2( radius * Math.cos(angle),
radius * Math.sin(angle) ));
}
var sword_shape:b2PolygonShape = new b2PolygonShape();
sword_shape.SetAsVector(vertices,8);
_shape = sword_shape;
}