我试图将一些代码从ActionScript移植到c ++ box2d
ActionScript的代码来自2011年,因此我不确定box2d使用的是哪个版本。
即时通讯使用最新的。
无论如何,这就是我在行动脚本:
var leftAxle:b2Body=world.CreateBody(leftAxleBodyDef);
leftAxle.CreateFixture(leftAxleFixture);
// this is the part i need to port , there is no SetPosition in the box2d 2.2+ version
leftAxle.SetPosition(new b2Vec2(carPosX/worldScale-axleContainerDistance/worldScale-axleContainerHeight/worldScale*Math.cos((90-axleAngle)*degreesToRadians),carPosY/worldScale+axleContainerDepth/worldScale+axleContainerHeight/worldScale*Math.sin((90-axleAngle)*degreesToRadians)));
斜边的盒子
最佳答案
抱歉,以为您是从C ++转换为AS3
快速查看代码:https://github.com/cocos2d/cocos2d-x/blob/ac2c0469c71eaabff38f545ce956859627f2b7fc/external/Box2D/Dynamics/b2Body.cpp
看来SetPosition()
现在是SetTransform(const b2Vec2& position, float32 angle)
。这是因为他们将位置和旋转作为b2Transform
储存在幕后。甚至GetPosition()
都只是返回position
的b2Transform
属性