-1

这个问题已经存在很长时间了,但对我来说没有令人满意的解决方案。我删除了第一个帖子,而是发布了一个可以用是或否快速回答的问题,这样我就可以继续我的工作了。

如果你能在它被“不是一个好问题”删除之前非常快地回答它。使用从 PhysicsEditor 到 Nape 的自定义形状与使用Box2D相同吗?(ofc 改变语法)

如果您可以查看该链接,然后说这与 Nape 中的相同过程就足够了,谢谢。

我问这个是因为到目前为止我发现 Box2D 教程更容易理解。

public var floor:Body;

floor = new Body(BodyType.STATIC);
var floorShape:PhysicsData = new PhysicsData();
floor.shapes.add(floorShape); // Error: Implicit coercion of a value of type PhysicsData to an unrelated type nape.shape:Shape.
floor.space = space;
4

1 回答 1

0

更新:

根据这篇文的评论,听起来 Nape 的最新版本已经破坏了与物理编辑器的兼容性。具体来说,body 对象上不再存在graphicand属性。graphicUpdate建议的解决方案是删除对这些属性的引用。

我无法对此进行测试,但您可以尝试createBody按如下方式更新 floor 类的方法:

public static function createBody(name:String /*,graphic:DisplayObject=null*/):Body {
    var xret:BodyPair = lookup(name);
    //if(graphic==null) return xret.body.copy();

    var ret:Body = xret.body.copy();
    //graphic.x = graphic.y = 0;
    //graphic.rotation = 0;
    //var bounds:Rectangle = graphic.getBounds(graphic);
    //var offset:Vec2 = Vec2.get(bounds.x-xret.anchor.x, bounds.y-xret.anchor.y);

    //ret.graphic = graphic;
    /*
    ret.graphicUpdate = function(b:Body):void {
        var gp:Vec2 = b.localToWorld(offset);
        graphic.x = gp.x;
        graphic.y = gp.y;
        graphic.rotation = (b.rotation*180/Math.PI)%360;
    }   
    */
    return ret;
}
于 2014-06-18T18:35:44.447 回答