演示程序是一次滑动屏幕。身体(在我的例子中,它是一门蓝色的大炮)将相应地旋转。所以我为炮身和地面身体定义了一个旋转关节,但似乎锚设置不正确,导致无法用鼠标关节旋转身体。《国际惯例》,接下来我会上传相关的编码/画面。请看看你是否可以帮助我。
图1:定义相关体,回转关节
图2:触摸回调函数:创建鼠标关节
图3:模拟器画面(从模拟器看,旋转锚点好像不正确)
由于缺乏“声誉”,我无法在此处上传图片或发布 img 链接,我已在自己的评论中添加了 img 链接。
演示程序是一次滑动屏幕。身体(在我的例子中,它是一门蓝色的大炮)将相应地旋转。所以我为炮身和地面身体定义了一个旋转关节,但似乎锚设置不正确,导致无法用鼠标关节旋转身体。《国际惯例》,接下来我会上传相关的编码/画面。请看看你是否可以帮助我。
图1:定义相关体,回转关节
图2:触摸回调函数:创建鼠标关节
图3:模拟器画面(从模拟器看,旋转锚点好像不正确)
由于缺乏“声誉”,我无法在此处上传图片或发布 img 链接,我已在自己的评论中添加了 img 链接。
首先,在创建旋转关节时,您应该使用 Initialize,如下所示:
cannonJointDef.Initialize(groundBody, cannonBody, cannonBody->GetPosition());
最后一个参数是世界坐标中的锚点。在这种情况下,它将是大炮的中心。
然后,尝试在没有 mouseJoint 的情况下旋转大炮,只需直接设置旋转即可:
CGPoint touchVec = ccpSub(touchPos, _cannon.position);
float angle = ccpToAngle(touchVec) - M_PI_2;
cannonBody->SetTransform(cannonBody->GetPosition(), angle);