模拟"改变冰上方向"影响

时间:2014-09-02 19:30:41

标签: ios sprite-kit skphysicsbody flappy-bird-clone

我真的希望有人明白我要求的效果是什么。您是否曾经玩过角色滑动的游戏,当您尝试改变角色的方向时,它不是立竿见影的,因为他们需要在初始方向上减速才能开始滑动另一种方式? App Store' Swing Copters'上的新游戏Flappy Bird的制造商正是我所说的效果。有人可以帮我在SpriteKit中创建这个效果。我已经尝试通过施加不同的力量来实现它,但我要么没有正确地执行它,要么效果不可能用力。

提前致谢!

1 个答案:

答案 0 :(得分:0)

也许您想尝试使用一些加速功能。

让我们考虑地球上的引力(a = 9.81米/秒)。如果你将一个球直接投向天空,那么球的起始速度为:让我们说每秒5米(正速度)。 在短时间内,重力将球的速度拉低至0,因此球不能再高。在此之后,重力将球拉下直到它撞到地面。 (负速度)

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

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

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

的内容
v = (int) (a * t + v0);
v0 = v;

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

每帧重复此操作。

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

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

t必须再次为0,否则会出错。 我希望这很有帮助。