我想檢測一個正方形SkShapeNode
和一個圓圈SkShapeNode
之間的碰撞。它基本上可以工作,但似乎hitbox /物理實體並不真正與節點形狀對齊。它似乎是隨機的10-20分。與SKShapeNode(SpriteKit)奇怪的碰撞檢測
這是我的代碼:
SKShapeNode* circle= [SKShapeNode shapeNodeWithCircleOfRadius:7.0];
circle.physicsBody= [SKPhysicsBody bodyWithCircleOfRadius:7.0];
circle.physicsBody.usesPreciseCollisionDetection= YES;
circle.physicsBody.categoryBitMask= catCircle;
circle.physicsBody.contactTestBitMask= catSquare;
circle.position= CGPointMake(x, y);
[self addChild:circle];
SKShapeNode* square= [SKShapeNode shapeNodeWithRect:rect];
square.position= position;
square.physicsBody= [SKPhysicsBody bodyWithRectangleOfSize:rect.size];
square.physicsBody.categoryBitMask= catSquare;
square.physicsBody.contactTestBitMask= catCircle;
square.physicsBody.dynamic= YES;
square.physicsBody.usesPreciseCollisionDetection= YES;
[self addChild:square];
我通過移動正方形形狀(圓形保持位置)觸發碰撞:
[square runAction:[SKAction moveTo:somePoint duration:2]];
我在didBeginContact
通過removeAllActions
取消行動一旦檢測到碰撞。
這是它的樣子:
正如你可以看到,廣場上確實不停止一旦倒是圈,但在此之前/之後的幾個問題。
我在做什麼錯?
其實,這不是問題。例如,正如你在上面看到的那樣,在觸及圓圈之前(上方廣場),擊球也會發生,並且廣場停止。 然後,我想要做的是用方塊「拍」圓,但在某些情況下,方塊在視覺上擊中圓圈,但只是通過它而沒有碰撞檢測。 – user826955
所以我認爲這取決於你接近圓的地方,你會得到不同的行爲,就好像圓圈的邊界不是以它自己的對象爲中心,或者更可能是廣場不是中心。這可能指向你如何更新方塊的位置 – Rob85
我同意,它看起來像物理體* *不*代表節點形狀。但是,我似乎無法在節點或物理主體類中找到適當的方法來調整它。 另外,我發現的碰撞檢測教程都沒有做任何事情,除了我所做的。 – user826955