SKPhysicsJoint允许绕固定点轨道运动

4
使用SpriteKit物理关节,您如何使一个对象以固定距离绕另一个对象轨道运动?
Object-A不应该移动, 当施加力量时,Object-B应该绕着Object-A运动。
为了实现这一点,我尝试在两个物理体之间附加SKPhysicsJointLimit限制,然后对Object-B施加力。我认为结果是奇怪的,但可能并非如此...结果是Object-B会抖动,但会继续向前,似乎没有被完全约束在完全未移动的Object-A上。

我有一些想法,可以使用其他方法来实现这个,但我主要关心关于SKPhysicsJoints的答案,以便更好地了解它们的工作原理。 - nacross
对于那些寻找SKPhysicsJoints替代方法的人,我最终使用了followPath:duration: action。这似乎是另一种有效的方法 - https://dev59.com/bWMk5IYBdhLWcg3wtQBd?rq=1 - nacross
你使用那个实现得到了任何类似于Spring的效果吗? - Steven Ritchie
使用跟随路径来环绕物体可以产生精确的轨道,即使你所环绕的节点正在移动,也不会出现任何抖动。我仍然没有空闲时间尝试@TheGreenToaster的方法,这可能值得一试。 - nacross
1个回答

0

如果您查看此 问题,您会发现它与您所提问相反。

SKSpriteNode * ObjectA = [SKSpriteNode spriteNodeWithColor:[UIColor blackColor] size: CGSizeMake(5,5)];
ObjectA.position = CGPointMake(size.width/2,size.height/2);
ObjectA.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:ObjectA.size];
ObjectA.physicsBody.affectedByGravity = NO;
ObjectA.physicsBody.dynamic = NO;


SKSpriteNode * ObjectB = [SKSpriteNode spriteNodeWithColor:[UIColor blackColor] size: CGSizeMake(5,5)];
ObjectB.position = CGPointMake(size.width/2,size.height/4);
ObjectB.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:ObjectB.size];
ObjectB.physicsBody.affectedByGravity = YES;
ObjectB.physicsBody.dynamic = YES;


SKPhysicsJointPin *centerPin = [SKPhysicsJointPin jointWithBodyA: ObjectA.physicsBody bodyB: ObjectB.physicsBody anchor: ObjectA.position];


[self addChild: ObjectA];
[self addChild: ObjectB];
[self.scene.physicsWorld addJoint:centerPin];

这篇文章对设置大小帮助很大。

希望能有所帮助。


谢谢您的回答,我会尽快尝试。 - nacross

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接