0

我试图将一些代码从 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)));

基本上是斜边角的盒子

4

1 回答 1

2

抱歉,您以为您正在从 C++ 转换为 AS3

快速浏览一下代码:https ://github.com/cocos2d/cocos2d-x/blob/ac2c0469c71eaabff38f545ce956859627f2b7fc/external/Box2D/Dynamics/b2Body.cpp

好像SetPosition()是现在SetTransform(const b2Vec2& position, float32 angle)。这是因为他们在b2Transform幕后储备了位置和旋转。甚至GetPosition()只是归还positionb2Transform

于 2013-10-25T15:51:50.510 回答