gpt4 book ai didi

ios - 运行序列时为 Action 动态分配参数

转载 作者:行者123 更新时间:2023-11-29 12:53:03 24 4
gpt4 key购买 nike

我偶然发现了一个问题,但我找不到它的答案。我正在使用 Xcode 的 SK 模板来创建 iOS 游戏。我是初学者,请多多包涵。

基本上我有这段代码:

SKAction *releaseBubbles = [SKAction sequence:@[
[SKAction performSelector:@selector(createBubbleNode)onTarget:self],
[SKAction waitForDuration:speed]]];
[self runAction: [SKAction repeatAction:releaseBubbles
count:300]];

中执行
-(id)initWithSize:(CGSize)size {
if (self = [super initWithSize:size]) {

我在 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 中更改我的游戏关卡,当我更改关卡时,它也应该更改该速度参数.当然,这是行不通的,因为我相信我的 Action 是在场景初始化时开始的,我永远不会切换参数。

我需要做的是以特定速度(相对于水平)不断出现的气泡填充屏幕。

我真的不知道如何解决这个问题,因为在我看来我需要以某种方式停止并重新启动 Action 序列......

期待您的宝贵意见。

最佳答案

要不断用气泡填充屏幕,您可以使用 SKSceneupdate: 方法。以下是操作方法。

首先,添加一个属性,用于存储您上次添加气泡的日期。

@property(nonatomic, strong) NSDate *lastBubbleCreationDate;

然后,将您的 update: 方法更改为:

-(void)update:(CFTimeInterval)currentTime
{
// Create new bubble every 5s.
if (ABS([_lastBubbleCreationDate timeIntervalSinceNow]) > 5)
{
[self createBubbleNode];
}
}

最后,在您的 createBubbleNode 方法中,您必须存储创建最后一个气泡的时间:

-(void)createBubbleNode
{
// Your code here

// Set the date to now.
_lastBubbleCreationDate = [NSDate date];
}

您还需要调用createBubbleNode 来设置_lastBubbleCreationDate 的初始值。您可以在 didMoveToView: 方法中执行此操作。只需将此方法添加到您的场景实现中:

- (void)didMoveToView:(SKView *)view
{
// Creates first bubble and sets the initial value of the _lastBubbleCreationDate
[self createBubbleNode];
}

在接下来的关卡中,您只需更改 5s 值即可更频繁地制造泡泡,这将使游戏更加困难。

关于ios - 运行序列时为 Action 动态分配参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21961912/

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