2

我真的希望有人理解我所要求的效果。你有没有玩过角色单向滑动的游戏,当你尝试改变角色的方向时,它不是立即的,因为他们需要在初始方向上放慢速度,然后才能开始向另一种方向滑动?Flappy Bird的制造商在App Store“Swing Copters”上的新游戏正是我所说的效果。有人可以帮我在 SpriteKit 中创建这种效果吗?我已经尝试过通过施加不同的力来实现它,但我要么做得不正确,要么用力无法实现效果。

提前致谢!

4

1 回答 1

0

也许你想尝试使用一些加速的东西。

让我们考虑一下地球上的重力(a = 9.81 米/s²)。如果您将球直接抛向天空,则球的起始速度为:假设每秒 5 米(正速度)。片刻之后,重力将球的速度拉低到 0,所以球不能再高了。紧接着,重力将球向下拉,直到它撞到地面。(负速度)

如果我们在游戏中谈论这个,球不会上下移动,而是从左到右,你可以使用这样的东西。你投球的那一刻,就是游戏中你发出改变方向的命令的那一刻。球继续朝着它过去的方向前进,变慢,停止,改变方向,最后变得越来越快,直到你发送另一个命令再次改变方向(或者它撞到墙/地面)。在这种情况下,你必须反转你想要使用的加速度,所以整个事情以另一种方式重复。

如果球应该向右移动,正加速度,如果球应该向左移动,负加速度。

作为公式,您可以使用类似

v = (int) (a * t + v0);
v0 = v;

v 是下一个速度,a 是您要使用的加速度,t 是花费的时间,v0 是当前速度。t 应该计算自上次方向改变以来的纳米时间。(int) 将整个事物转换为整数,因此您可以直接使用它来移动屏幕上的球/图形。

每帧重复此操作。

对于方向更改,您可以使用

t = 0;
a = a * (-1);

t 必须再次为 0,否则会出错。我希望这可以帮到你。

于 2014-10-10T11:28:32.550 回答