iOS8&x2B;斯皮特基特。SKPhysicsJointSpring是否可以在重叠节点之间附加?

iOS8&x2B;斯皮特基特。SKPhysicsJointSpring是否可以在重叠节点之间附加?,ios8,sprite-kit,Ios8,Sprite Kit,我有一个磁盘网格(带纹理的SKSpriteNode),排列在背景矩形(带纹理的SKSpriteNode)上方的网格中: 我在背景矩形和每个磁盘之间绘制一个弹簧: dotNode.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:scaleFactor * [dotNode radius]]; dotNode.physicsBody.categoryBitMask = EIDotNodeCategory; dotNode.physic

我有一个磁盘网格(带纹理的SKSpriteNode),排列在背景矩形(带纹理的SKSpriteNode)上方的网格中:

我在背景矩形和每个磁盘之间绘制一个弹簧:

dotNode.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:scaleFactor * [dotNode radius]];

dotNode.physicsBody.categoryBitMask    = EIDotNodeCategory;
dotNode.physicsBody.collisionBitMask   = (EIDotNodeCategory | EISceneNodeCategory);
dotNode.physicsBody.contactTestBitMask = (EIDotNodeCategory | EISceneNodeCategory);

dotNode.physicsBody.dynamic = YES;

dotNode.physicsBody.density = 2.0;
dotNode.physicsBody.linearDamping = 0.01;
dotNode.physicsBody.restitution = 0.75;

SKNode *attachment = [dotNode.scene childNodeWithName:@"photoNode"];
SKPhysicsJointSpring *physicsJointSpring = [SKPhysicsJointSpring jointWithBodyA:attachment.physicsBody
                                                                          bodyB:dotNode.physicsBody
                                                                        anchorA:CGPointMake(dotNode.position.x, 8 + dotNode.position.y)
                                                                        anchorB:dotNode.position];

physicsJointSpring.damping = 0;
physicsJointSpring.frequency = 1;

[dotNode.scene.physicsWorld addJoint:physicsJointSpring];
以下是背景的物理设置:

PhotoNode *photoNode = [PhotoNode photoNodeWithName:@"photoNode" texture:self.photoTexture shader:shader];
photoNode.zPosition = 2;
photoNode.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:photoNode.size];

photoNode.physicsBody.categoryBitMask    = EIPhotoNodeCategory;
photoNode.physicsBody.collisionBitMask   = EISceneNodeCategory;
photoNode.physicsBody.contactTestBitMask = EISceneNodeCategory;

photoNode.physicsBody.dynamic = YES;
photoNode.physicsBody.allowsRotation = NO;
photoNode.physicsBody.pinned = YES;
以下是场景的物理设置:

// get physical
self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame];

self.physicsBody.categoryBitMask    = EISceneNodeCategory;
self.physicsBody.collisionBitMask   = (EIDotNodeCategory | EIPhotoNodeCategory);
self.physicsBody.contactTestBitMask = (EIDotNodeCategory | EIPhotoNodeCategory);
当我运行应用程序时,我得到以下信息:


没有弹簧行为。没有快乐。我错过了什么?

启用物理调试绘图。你会看到你的长方形是动态的,随着圆圈移动。您应该将矩形设置为静态(dynamic=NO),最好将其创建为边循环形状。

0x141E是的,节点在节点树中之后会发生关节连接。不解析您的响应。背景元素是唯一的矩形,并固定到场景节点。你指的是什么矩形?你是说磁盘吗?请澄清。谢谢。photoNode是动态的。不确定“固定”在此处是否有效,这取决于其父对象是否具有physicsBody。无论采用哪种方式,都可以在SKView上启用物理调试绘图,以便更好地了解真实情况。点是场景节点的子节点。photoNode是场景节点的子节点。所有节点都启用了PhysicsBody。场景提供了重力。固定photoNode并禁用其旋转将在空间中修复它。我仍然不明白为什么这不应该仅仅起作用。此外,为什么光节点不应该是物理的呢。假设我想让它旋转,或者用弹簧或其他什么东西连接到其他东西上。photoNode不需要是动态的和固定的,您可以通过使用edgeLoopFrom将photoNode创建为静态节点来更有效地实现同样的效果。。。初始化器。这将使它成为一个不可移动的物理体,不管它固定在哪里。是的,但从模拟的角度来看,rect没有效果。它从来没有想过我会这样说iOS框架,但是SpriteKit——虽然它是渲染的一件轻而易举的事——对于最基本、最琐碎的物理模拟来说几乎是不可用的。没用。叹息。。。