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米/秒的速度,依此类推. 老实说,我不相信我甚至不得不解释. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |