我在 SpriteKit 的场景顶部有一条透明线。节点可以通过它而不会发生碰撞(但会发生接触)。 我创建了一个细矩形而不是线,但是当节点与该矩形接触时,节点的行为完全改变(很奇怪)。 问题出在哪里?
CGRect rectangle = CGRectMake(0, 0, self.frame.size.width, 2);
SKShapeNode *yourline = [[SKShapeNode alloc] init];
yourline.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:rectangle.size];
yourline.fillColor =[SKColor redColor];
yourline.physicsBody.categoryBitMask = topEdgeCategory;
yourline.physicsBody.dynamic = YES;
yourline.position = CGPointMake(self.frame.size.width/2,self.frame.size.height-3);
yourline.physicsBody.friction = 0;
yourline.physicsBody.linearDamping = 0;
yourline.physicsBody.restitution = 1.0f;
[self addChild:yourline];
self.physicsBody.categoryBitMask = edgeCategory;
// change gravity settings of the physics world
self.physicsWorld.gravity = CGVectorMake(0, 0);
self.physicsWorld.contactDelegate = self;
您可以假设我想创建一个线性激光器,当节点接触它时,它的健康状况会降低。 其他问题:我如何为形状着色?在我的场景中它是透明的,尽管颜色是红色的。
非常感谢
我没有足够的信息来回答第一个问题,但我可以回答第二个问题。 你需要改变:
SKShapeNode *yourline = [[SKShapeNode alloc] init];
至:
SKShapeNode *yourline = [SKShapeNode shapeNodeWithRectOfSize:rectangle.size];
现在您将能够看到红线。之前的问题是你从未布置过“yourline”的大小,而只是对其进行了初始化。实际节点及其物理体的大小可以不同,因此必须同时指定它们。你只说明了物理体的大小。希望这有帮助!