【发布时间】:2014-10-21 00:14:30
【问题描述】:
我有一个磁盘网格(带纹理的 SKSpriteNodes)排列在背景矩形(带纹理的 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);
当我运行应用程序时,我得到了这个:
没有弹簧行为。没有喜悦。我错过了什么?
【问题讨论】:
-
0x141E 是的,节点连接在节点树中之后发生。
标签: ios8 sprite-kit