我在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;
你可以假设我想创建一个线性激光器,当一个节点接触到它时,它的健康状况会降低。 其他问题:我怎样才能给形状着色?在我的场景中它是透明的,虽然颜色是红色。
非常感谢
答案 0 :(得分:0)
我没有足够的信息来回答第一个问题,但我可以回答第二个问题。 你需要改变:
SKShapeNode *yourline = [[SKShapeNode alloc] init];
为:
SKShapeNode *yourline = [SKShapeNode shapeNodeWithRectOfSize:rectangle.size];
现在您将能够看到红线。之前的问题是你从来没有规定过" yourline"你只是初始化它。实际节点及其物理主体可以是不同的大小,因此必须同时指定它们。你只说了物理体的大小。希望这有帮助!