0

我正在尝试在 Sprite Kit 游戏中制作一个视觉元素(一种进度条),它代表抛出物体的“强度”。因此,当触摸屏幕时,仪表开始积聚。按住太久会导致栏重置并无限期地这样做,直到用户从屏幕上松开手指。其上相应的米力位置将导致物体被抛出的距离。我知道如何做的唯一元素是使用 touchesBegan、touchesEnded。请帮助 - 在这个问题上找不到任何关于 Objective-c 和 sprite 套件的在线内容(也检查了 github)。

4

1 回答 1

1

很多方法可以做这样的事情。你需要有两个关键的东西。1)跟踪用户是否触摸的东西。2)跟踪用户持续触摸多长时间的东西。

要跟踪用户是否实际触摸,可以使用 BOOL,在 touchesBegan 方法中将其设置为 true。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    myBool = true;    
}

在 touchesEnded 方法中,一旦触摸结束,您将再次设置 BOOL。

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    myBool = false;

    // your throw the object code.
    // strength based on myInt.
    // do not forget to set the myInt back to 0.
}

第二个问题是跟踪触摸持续时间。有很多方法可以做到这一点。其中之一是使用更新方法。

-(void)update:(CFTimeInterval)currentTime {
    if(myBool) {
        myInt++;
        // code for modifying the running meter bar
        if(myInt > 600) {
            // max time reached. reset the meter bar
            myInt = 0;
        }
    }
}

我以60为例。请记住,SK 默认以 60 FPS 运行,这意味着 600 等于 10 秒。

上面是非常通用的代码,应该作为可以做什么的入门。例如,除了投掷功能之外,不允许任何其他触摸。您可能希望使用投掷按钮而不是整个屏幕。剩下的就等你自己去想了。

于 2015-02-27T22:41:26.143 回答