我目前正在使用 box2Dweb 创建游戏。每当我的形状向画布的右下角移动时,它们的精灵似乎会移动一些偏移量,并且变得越来越大(如果我将形状向画布的左上角移动,精灵会越来越好地对齐) ,我真的不明白为什么。你们看到我的显示循环有什么问题吗?
我正在用这个片段创建方形立方体:
this.createSquare= function(x, y, bodyDef, fixtureDef, object){
if(object.isStatic){
bodyDef.type = b2Body.b2_staticBody;
}else{
bodyDef.type = b2Body.b2_dynamicBody;
}
fixtureDef.shape = new object.shape;
polygonShape = fixtureDef.shape;
polygonShape.SetAsBox(object.width,object.height);
bodyDef.position.Set(x/game.worldScale,y/game.worldScale);
}
我在我的显示循环中使用这个函数来显示一些精灵:
for(var i=0; i < tab.length; i++) {
context.save();
console.log(context);
context.translate(tab[i].GetBody().GetPosition().x * 30, tab[i].GetBody().GetPosition().y * 30);
context.rotate(tab[i].GetBody().GetAngle());
var dataResize = { 'image' : tab[i].GetUserData().img,
'imgPosX' : tab[i].GetBody().GetPosition().x,
'imgPosY' : tab[i].GetBody().GetPosition().y,
'imgWidth' : tab[i].m_shape.m_vertices[2].x*60,
'imgHeight': tab[i].m_shape.m_vertices[2].y*60
}
context.drawImage(
dataResize.image,
(dataResize.imgPosX) - (dataResize.imgWidth/2), //img pos x
(dataResize.imgPosY) - (dataResize.imgHeight/2), //img pos y
dataResize.imgWidth, //img wdith
dataResize.imgHeight //img height
)
context.restore();
}
我错过了什么?我已经尝试阅读几乎所有可以在 SOFLOW 上找到的内容,但看不到问题所在。
谢谢