【问题标题】:Trying to generate sword swinging attack using Box2D in Citrus Engine尝试在 Citrus Engine 中使用 Box2D 生成挥剑攻击
【发布时间】:2015-11-06 13:40:16
【问题描述】:
在过去的几天里,我一直在拼命想弄清楚如何正确扩展 CitrusEngine 的 Box2DPhysicsObjects 以生成我的自定义对象。我的目标是产生这种行为:
example of desired behavior.
这是为了模拟我的英雄在挥动他的剑进行攻击时向使用输入确定的方向冲刺。剑“休眠”直到攻击状态被激活。
我认为我对如何正确使用 Box2D(尤其是关节)存在根本性的误解。如果有人能指出我正确的方向,我将永远感激不尽。我无法真正提供我当前的代码,因为它已经无法正常工作了。
【问题讨论】:
标签:
actionscript-3
flash
box2d
citrus-engine
box2d-joints
【解决方案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;
}