我试图将使用SpriteKit开始的游戏转换为Cocos2d V3。然而,我在物理方面遇到了一些问题。我创建了一个类似于人体的玩家角色。在SpriteKit中,四肢通过PinJoints连接。我通过Chipmunk中的PivotJoints重新创建了基本功能。这个功能可以正常工作。
但是,我需要添加一些摩擦力到关节上。现在它们只会尽可能快地旋转,更重要的是,我需要限制关节的旋转角度。你可以想象,大多数人无法自由地将他们的肩膀旋转360度。 ;)
据我所知,我应该使用ChipmunkRotaryLimitJoint和ChipmunkGearJoint来实现这一点。我的问题是,我不知道如何正确地附加它们。这是我现在的代码:
但是,我需要添加一些摩擦力到关节上。现在它们只会尽可能快地旋转,更重要的是,我需要限制关节的旋转角度。你可以想象,大多数人无法自由地将他们的肩膀旋转360度。 ;)
据我所知,我应该使用ChipmunkRotaryLimitJoint和ChipmunkGearJoint来实现这一点。我的问题是,我不知道如何正确地附加它们。这是我现在的代码:
- (CCPhysicsJoint *)createPinJointWithBodyA:(CCPhysicsBody *)bodyA
bodyB:(CCPhysicsBody *)bodyB
anchor:(CGPoint)anchor
friction:(CGFloat)friction
lowerLimit:(CGFloat)lowerLimit
upperLimit:(CGFloat)upperLimit
{
CCPhysicsJoint *pin = [CCPhysicsJoint
connectedPivotJointWithBodyA:bodyA
bodyB:bodyB
anchorA:anchor];
ChipmunkRotaryLimitJoint *limitJoint = [ChipmunkRotaryLimitJoint
rotaryLimitJointWithBodyA:bodyA.body
bodyB:bodyB.body
min:CC_DEGREES_TO_RADIANS(lowerLimit)
max:CC_DEGREES_TO_RADIANS(upperLimit)];
ChipmunkGearJoint *gearJoint = [ChipmunkGearJoint
gearJointWithBodyA:bodyA.body
bodyB:bodyB.body
phase:0.5
ratio:0.5];
return pin;
}
齿轮关节调用中的值只是占位符!
有人知道这应该如何工作吗?我通过谷歌找到了一些东西,但所有教程都假设我在其他环境中使用chipmunk。我是否需要为这些限制和齿轮关节创建自己的CCPhysicJoint实现?
谢谢和最好的祝愿, Thomas