在pixi.js中从box2dweb渲染旋转的矩形

时间:2013-11-07 20:05:37

标签: javascript 2d box2d box2dweb pixi.js

我正在为box2dweb编写自己的渲染器,我决定使用pixi.js。

我能够渲染矩形,但只有当它们没有旋转时 - 如果它们是,则动画会搞砸。它看起来像这样(左边的一个是来自box2d的调试渲染器,右边的一个是我的):http://scr.hu/0ozr/o552x

我知道我需要在pixi中为图形对象设置枢轴,但我不知道如何访问框从box2d旋转的点的坐标。

我想我需要使用某种形式的联系约束,但是如何访问呢?

这是为多边形创建pixi图形对象的代码的一部分:(我需要将所有顶点转换为坐标系,并在多边形边界框的左上角开始,因为PIXI使用这种坐标系)。

getModel : function(body) {
  var that = this;

  var model = new PIXI.Graphics();
  model.beginFill(0xFFFFFF);
  var box = physHelpers.getBoundingBox(body);
  model.position.x = box.x * that.scale;
  model.position.y = box.y * that.scale;

  var vertices = physHelpers.getTranslatedVertices(body);
  model.moveTo(vertices[0].x * that.scale, vertices[0].y * that.scale);

  for(var i = 1 ; i < vertices.length ; i++){
    model.lineTo(vertices[i].x*that.scale, vertices[i].y*that.scale);
  }

  model.pivot = new PIXI.Point(box.width/2,model.height/2);
  model.rotation = body.GetBody().GetAngle();
  model.endFill();
  return model;
}

1 个答案:

答案 0 :(得分:1)

好吧,我明白了。似乎PIXI更改了当您更改枢轴时它开始渲染的点(即使不更改旋转也会影响对象位置)。另外,box2d旋转绕着身体的中心旋转。

所以现在我可以使用box2d的身体位置而不转换到左上角开始渲染。