我正在創建一個射擊遊戲,我正在從一個針對敵方射彈的節點射擊射彈。當炮彈同時與兩個敵方節點接觸時,聯繫人委託會被調用兩次。我希望能夠知道彈丸已經接觸到多少個節點,以便給玩家兩倍獎金。如何檢測SpriteKit中碰撞中涉及的節點數量
有人可以建議一個乾淨和有效的方式來實現這一目標嗎?
我正在創建一個射擊遊戲,我正在從一個針對敵方射彈的節點射擊射彈。當炮彈同時與兩個敵方節點接觸時,聯繫人委託會被調用兩次。我希望能夠知道彈丸已經接觸到多少個節點,以便給玩家兩倍獎金。如何檢測SpriteKit中碰撞中涉及的節點數量
有人可以建議一個乾淨和有效的方式來實現這一目標嗎?
所以,我在評論部分去了Dobroćudni Tapir的建議。
添加了一個名爲hitCount的變量作爲子類彈丸SKSpriteNode的屬性。
@property NSUInteger hitCount;
然後在現場didBeginContact
-(void)didBeginContact:(SKPhysicsContact *)contact
{
SKNode *firstBody;
SKNode *secondBody;
if (contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask)
{
firstBody = contact.bodyA.node;
secondBody = contact.bodyB.node;
}
else
{
firstBody = contact.bodyB.node;
secondBody = contact.bodyA.node;
}
if (firstBody.physicsBody.categoryBitMask == projectileCategory && secondBody.physicsBody.categoryBitMask == delusionCategory)
{
//Other logic
RCCProjectile *projectile = (RCCProjectile*)firstBody;
projectile.hitcount ++;
[projectile removeFromParent];
}
}
然後,終於在projectileNode,我推翻了removeFromParent方法
-(void)removeFromParent
{
if (self.hitcount >= 2)
{
[(LevelScene*)self.scene showBonusForProjectile:self];
}
[super removeFromParent];
}
也許您可以將#hits存儲在方法的一個屬性和踢中,該方法會在初次命中x秒後檢查命中數量?
換句話說:將命中檢測與獎勵邏輯分開。
你總是可以hitCount比如VAR添加到您的拋射和增加每個聯繫人。 –