玩家跌落系统(基本上是重力)

时间:2011-05-24 13:58:25

标签: java gravity

我正在制作一款类似于Doodle Jump的游戏,让你的玩家尽可能高。现在,我让我的播放器工作,并移动。但是,问题是,我没有引力,或任何会让玩家再次摔倒在地的东西。你们有没有想过这样做?我试着让玩家得到一个恒定的力量,一直被推下来,但是,它不是很平滑,并且它不像真正的下降。我可以帮助制作这个播放器掉落系统吗?

编辑:

    GRAVITY = 10;
    TERMINAL_VELOCITY = 300;
    vertical_speed = 0;

    public void fall(){ 
    this.vertical_speed = this.vertical_speed + GRAVITY;
    if(this.vertical_speed > TERMINAL_VELOCITY){
        this.vertical_speed = TERMINAL_VELOCITY;
    }
    this.y = this.y - this.vertical_speed;
}

我做了这个,不起作用,把我的播放器播放到空中。

5 个答案:

答案 0 :(得分:7)

在现实世界中,重力会随着时间的推移逐渐增加下降速率(每秒9.8米<强>每秒)。您可以通过给予玩家垂直速度(当他们跳跃或从平台上掉下来)然后每次围绕主游戏循环从该值减去一个恒定量来模拟这一点,以便它们随着时间的推移而加速。你会希望对此(最终速度)设置一个最大限制,否则当它们长时间落下时它们可能会很快地达到可笑的速度。伪代码看起来像这样:

const GRAVITY = 10;
const TERMINAL_VELOCITY = 300;

object Player 
{
    int vertical_speed = 0;
    int vertical_position;  

    function fall ()
    {
        this.vertical_speed = this.vertical_speed + GRAVITY;
        if (this.vertical_speed > TERMINAL_VELOCITY)
        {
            this.vertical_speed = TERMINAL_VELOCITY;
        }
        this.vertical_position = this.vertical_position - this.vertical_speed;
    }
}

编辑每秒9.8米每秒是正确的!请不要编辑它!加速度是指速度随时间的变化,以米/秒/秒表示。每秒9.8米每秒意味着静止物体在1秒后将加速到足以以9.8米/秒的速度行进。 2秒后,它将达到19.6米/秒的速度。 3秒后它将达到29.4米/秒的速度,依此类推。

老实说,我不相信我甚至不得不解释。

答案 1 :(得分:4)

你知道引力的公式吗?

velocity = acceleration * time

acceleration是重力加速度。

time是已经过去的时间。

此外,

distance = 1/2 * acceleration * time**2

答案 2 :(得分:0)

而不是让一个恒定的力量作用于人,你需要让人在跌倒时加速。

他们应该以{{1​​}}速度开始下降。然后,你应该在它们下降时增加力量。

为此,您需要随时间更新速度:

这样的事情:

0

您需要不断更新速度。

答案 3 :(得分:0)

您可以在that website找到解释和演示。我也建议你读一本关于物理学的书或者至少有一些关于引力的维基文章。

答案 4 :(得分:0)

根据我的经验,做一些这样的事情。

present

方法run()应该在一个循环中。