Ios 在哪里测试这种情况?
我想测试玩家的身体何时移动过屏幕上的某个点,并在移动时调用gameOver节点 我试着把它放在触碰开始方法中,但每次用户触碰之后,它都会继续添加gameOver节点 我还尝试将其放入Ios 在哪里测试这种情况?,ios,objective-c,sprite-kit,Ios,Objective C,Sprite Kit,我想测试玩家的身体何时移动过屏幕上的某个点,并在移动时调用gameOver节点 我试着把它放在触碰开始方法中,但每次用户触碰之后,它都会继续添加gameOver节点 我还尝试将其放入-(void)update:(CFTimeInterval)currentTime方法中,但它每帧都添加一个gameOver节点 这是一段代码,用于测试用户在屏幕上的某个点上是否移动/穿过: //Check to see if moves are at 0. if (movesRemaining < 0) {
-(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];
}],
]]];
}
检查用户在屏幕上的位置/他们在0时居住在精灵套件代码中的位置的最佳位置是哪里?
它在使用帧更新时进行了精确测试,但添加的帧太多
我还尝试在didMoveToView方法中使用“performSelector”调用,但也不起作用
(代码:
)
那我该怎么做呢 IMO,-(void)update:(CFTimeInterval)currentTime
是进行检查的好地方。但是,由于在outOfMoves
方法仍在运行时,检查会重复多次,因此会多次创建节点上的游戏
我建议您添加一个BOOL
变量,该变量最初是NO
,在调用outOfMoves
方法时更改为YES
。然后返回您的更新:
,再次调用outOfMoves
之前,检查此变量是否为NO
。这样,您就不会在方法运行时一直调用它。此外,当您的方法完成并再次准备就绪时,您可以将此变量设置回NO
-(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]];
}
-(void)didMoveToView:(SKView *)view {
[self performSelector:@selector(checkNow) withObject:nil afterDelay:1.0];
}