如何在SpriteKit中检测线路上的联系人

时间:2015-03-07 18:42:01

标签: objective-c sprite-kit collision

我在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;

你可以假设我想创建一个线性激光器,当一个节点接触到它时,它的健康状况会降低。 其他问题:我怎样才能给形状着色?在我的场景中它是透明的,虽然颜色是红色。

非常感谢

1 个答案:

答案 0 :(得分:0)

我没有足够的信息来回答第一个问题,但我可以回答第二个问题。 你需要改变:

SKShapeNode *yourline = [[SKShapeNode alloc] init];  

为:

SKShapeNode *yourline = [SKShapeNode shapeNodeWithRectOfSize:rectangle.size];

现在您将能够看到红线。之前的问题是你从来没有规定过" yourline"你只是初始化它。实际节点及其物理主体可以是不同的大小,因此必须同时指定它们。你只说了物理体的大小。希望这有帮助!