我想測試玩家的身體何時移動過屏幕上的某個點,並在遊戲結束時調用gameOver節點。在哪裏測試這種情況?
我試着把它放在觸摸開始的方法,但隨後每次用戶觸摸後,它會繼續添加gameOver節點。
我也試過把它放在-(void)update:(CFTimeInterval)currentTime
方法中,但是它在每一幀都添加了一個gameOver節點。
這是當用戶離開的舉動,測試代碼/穿過屏幕上的某個點:
//Check to see if moves are at 0.
if (movesRemaining < 0) {
movesRemaining = 0;
}
if (_fish.position.y < CGRectGetMidY(self.frame)-160) {
movesRemaining = 0;
}
if (movesRemaining == 0) {
[self runAction:[SKAction sequence:@[
[SKAction waitForDuration:0.5],
[SKAction runBlock:^{
[self outOfMoves];
}],
]]];
}
調用該:
-(void)outOfMoves {
SKShapeNode *gameOverNode = [SKShapeNode node];
[gameOverNode setPath:CGPathCreateWithRoundedRect(CGRectMake(-140, -125, 280, 250), 10, 10, nil)];
gameOverNode.strokeColor = gameOverNode.fillColor = [UIColor colorWithRed:192/255. green:47/255. blue:47/255. alpha:1.0];
gameOverNode.position = CGPointMake(CGRectGetMidX(self.frame), -150);
SKLabelNode *outOfMoves = [SKLabelNode labelNodeWithFontNamed:@"DIN Condensed"];
outOfMoves.position = CGPointMake(0,80);
outOfMoves.fontSize = 40;
outOfMoves.text = @"OUT OF MOVES";
SKLabelNode *reTry = [SKLabelNode labelNodeWithFontNamed:@"DIN Condensed"];
reTry.position = CGPointMake(0, 30);
reTry.fontSize = 40;
reTry.fontColor = [UIColor colorWithRed:255/255. green:156/255. blue:0/255. alpha:1.0];
reTry.name = @"reTry";
reTry.text = @"TRY AGAIN";
[gameOverNode addChild:outOfMoves];
[gameOverNode addChild:reTry];
[self addChild:gameOverNode];
[gameOverNode runAction:[SKAction moveToY:CGRectGetMidY(self.frame)+40 duration:0.5]];
}
哪裏是最好的地方將檢查屏幕上用戶所處位置/何時處於0的條件置於sprite-kit代碼中?
它準確地測試了它何時被幀更新,但增加了太多。
我也使用didMoveToView法內 「performSelector」 呼叫嘗試,但沒有工作,要麼..
(代碼:
-(void)didMoveToView:(SKView *)view {
[self performSelector:@selector(checkNow) withObject:nil afterDelay:1.0];
}
)
所以,我該怎麼辦這個?
感謝愚蠢的我,工作得很好。 :) –