這裏目前確定的是,我用我的didBeginContact
委託方法的代碼片段:接觸使用SprikeKit聯繫代表
- (void)didBeginContact:(SKPhysicsContact *)contact
{
for (Lasers *laser in self.lasers.spawnArray) {
if (contact.bodyB == self.player.physicsBody && [contact.bodyA.node.name isEqual:laser.sprite.name]) {
if ([self.lasers isDoneSpawning]) {
if (!self.player1.isSuperPlayer) {
[self playerDied];
}
}
}
}
}
因此,有紅色激光束,如果球員跑進能殺死玩家他們。如果玩家當前具有superPlayer
加電激活,那麼玩家可以穿過這些紅色光束。
上面的代碼完美地實現了這一目標,但是當玩家啓動加電並且在紅色光束中間站立並且停止加電時,玩家不會死亡。原因是這種方法只在兩個精靈之間的初始接觸開始時才運行。
我不認爲有一個委託方法來確定是否目前正在接觸的精靈。有沒有人有這個解決方案?
也許在上電開始時將'contactTestBitMask'設置爲不接觸激光器,然後在上電結束時將其重新設置回去?我相信會產生一個'didEndContact',然後是'didBeginContact',允許相應的代碼發揮作用。 – ColGraff 2014-09-05 14:12:30
我會試試這個 – rjm226 2014-09-05 14:18:34
這工作!發佈它作爲答案,我會接受它。 – rjm226 2014-09-05 14:21:13