我正在开发一款小游戏。在这个游戏中,物体正在向你倾斜,你必须躲闪。随着时间的推移,物体向你移动的速度越快,使游戏变得更加困难。
我的问题是:如果我在速度++中使用++运算符,则对象在太短的时间内过快。
假设我们有这个默认代码:
int speed = 1;
speed ++
所以我需要一些东西(可能是deltatimer?)来操纵++运算符并给它一个最大值。
答案 0 :(得分:3)
假设您想要一个较慢的线性进展并且可以处理小数:
double increment = 0.2; // or whatever value you like
double speed = 1;
// ...
speed += increment;
也许你想要一个较慢的增长曲线:
int speed_stepper = 2;
double speed = 1;
// ...
speed = 2 * Math.log(speed_stepper ++);
以下是这些增长曲线的外观(由Wolfram|Alpha提供):
要设置最大值,只需在结尾添加一个比较:
if (speed > maximum) { speed = maximum; }
答案 1 :(得分:1)
我的问题是:如果我在++中使用++运算符那么 物体在太短的时间内走得太快。
然后++
不是你想要增加的方式。有什么问题:
xPosition += DELTA_X;
yPosition += DELTA_Y;
另外,使用++
不会促进变速(它总是假设速度= 1 ),而上述方法确实如此。
答案 2 :(得分:0)
也许你经常增加你的速度变量。如果希望变量在指定的时间段后递增,则可以使用Timer和TimerTask类。例如:
timer = new Timer(true);
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
speed++;
}
};
timer.scheduleAtFixedRate(timerTask, 0, 10000); // runs timerTask every 10000ms (10 seconds)
此代码基本上每10秒将速度增加1 。因此,如果你在开始时速度= 1,你将在50秒后获得速度= 6。
我认为你也可以使用浮点值代替int来获得速度,并使用0.1 ex这样的小值来增加它。
float speed = 1.0f;
speed+=0.1f;