加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 一个玩家掉落的系统(基本上是重力)

发布时间:2020-12-15 04:54:51 所属栏目:Java 来源:网络整理
导读:我正在制作一款类似于Doodle Jump的游戏,让你的玩家尽可能高.现在,我让我的播放器工作,并移动.但是,问题是,我没有引力,或任何会让玩家再次摔倒在地的东西.你们有没有想过这样做?我试着让玩家得到一个恒定的力量,一直被推下来,但是,它不是很平滑,并且它不像
我正在制作一款类似于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;
}

我做了这个,没用,将我的播放器播放到空中.

解决方法

在现实世界中,重力将随着时间的推移(每秒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米/秒的速度,依此类推.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读