gpt4 book ai didi

ios - 在哪里测试这种情况?

转载 作者:行者123 更新时间:2023-11-28 22:07:31 25 4
gpt4 key购买 nike

我想测试玩家的 body 何时移动超过屏幕上的特定点,并在他们移动时调用 gameOver 节点。

我尝试将它放在 touches 开始方法中,但之后每次用户触摸时它都会继续添加 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]];

}

在 sprite-kit 代码中,检查用户在屏幕上的位置/当他们生命为 0 时的最佳位置在哪里?

它在更新框架时准确地测试了,但是添加了太多。

我还尝试在 didMoveToView 方法中使用“performSelector”调用,但这也不起作用..

(代码:

-(void)didMoveToView:(SKView *)view {
[self performSelector:@selector(checkNow) withObject:nil afterDelay:1.0];
}

)

那我该怎么做呢?

最佳答案

IMO,-(void)update:(CFTimeInterval)currentTime 是放置该检查的好地方。但是,您的 game over 节点会被创建多次,因为在 outOfMoves 方法仍在运行时检查会重复多次。

我建议你添加一个BOOL变量,当outOfMoves方法时,原来是NO,改为YES叫做。然后返回您的 update:,在再次调用 outOfMoves 之前检查此变量是否为 NO。这样你就不会在方法运行时继续调用它。此外,当您的方法完成并再次准备就绪时,您可以将此变量设置回 NO

关于ios - 在哪里测试这种情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23599385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com