通过屏幕触摸的速度来调节游戏的速度

时间:2012-07-17 13:28:14

标签: java android performance touch

我正在创建一个游戏,用户必须更快地点击屏幕以允许他们在游戏中更快,但是我遇到了一些问题。我已经制作了游戏,因此它可以计算用户最后一次点击时每分钟的点击量以及他们当前的点击量,但是这种方法似乎生涩并且效果不佳。我也无法找到另一种方法来做到这一点,所以当他们根本没有点击时,它就会变慢。

我如何为游戏创建这种机制,用户点击的速度越快,游戏的速度越快,如果他们没有点击,它就会减速停止。

由于

这是我到目前为止的一个片段,计算用户的每分钟抽头数(TPM)。 (这是触摸式方法)。我目前正在将TPM传递给一个更新方法,每次更新时它都以TPM / 100移动背景(它以30FPS运行)

 if (thisTouch == 0 || lastTouch == 0) {
            Log.d("info","First Touch");
            thisTouch = lastTouch = System.currentTimeMillis();
        } else {
            Log.d("d","touch");
            thisTouch = System.currentTimeMillis();

            long difference = thisTouch - lastTouch;

            TPM = (int)((1000*60)/difference);

            lastTouch = thisTouch;
        }

我想知道如何改变这一点,以便游戏在点击速度更快时加快速度,然后在不触摸屏幕时减慢速度。

3 个答案:

答案 0 :(得分:1)

也许你可以这样做:

  • 创建PriorityQueue<长>
  • 每当用户点击屏幕时,将(currentTime + someTimeOut)添加到队列
  • 每当您要检查当前速度(例如队列的大小)时,首先删除所有元素> currentTime的。

当你做这样的事情时,不要忘记添加适当的线程安全措施。

答案 1 :(得分:0)

不是那个“那家伙”,但听起来你现在每分钟的水龙头计划相当不错,但实施得很糟糕。但是,我强烈建议使用较小的时间量,例如每三秒钟点击一次,因为游戏通常是快节奏的,并且必须等待一分钟才能看到你的角色加速或减速可能会产生迟滞感。

或者,您可以使用某种形式的加速度,每次点击屏幕时都会增加到最大限度,并且在没有点按屏幕时会随着时间的推移而减少。

现在我看到你用一些代码更新了你的问题,我想指出点击是触摸并从屏幕释放不一定是触摸。老实说,从你的代码中我不知道你是否在补偿这一点,所以这可能是你的一些问题的根源。

最后,对于游戏开发算法和理论,您可能希望看到此StackExchange网站:https://gamedev.stackexchange.com/

听起来你非常接近让你的游戏感受到你想要的方式,祝你好运!

答案 2 :(得分:0)

你的一般方法几乎是唯一的方法,它只需要一些微调。

保留一般的TapsPerTime变量。对于您注册的每个新点击,请不要替换 TapsPerTime,而是计算新的加权值:

TapsPerTime =(TapsPerTime * X)+(MeasureTapsPerTime *(1-X))

您需要凭经验找到因子X(通过尝试最适合您的因素)。这里的一般想法是每次测量只会将使用的值略微推向正确的方向。

此外,如果您没有在设定的时间内检测到点击,只需使用相同的公式更新TapsPerTime,但对MeasureTapsPerTime使用0(零)。因此,如果用户没有做任何事情,那么价值会下降。