首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Java中让玩家只能跳到一定的高度?

如何在Java中让玩家只能跳到一定的高度?
EN

Stack Overflow用户
提问于 2019-05-26 09:14:14
回答 1查看 107关注 0票数 1

所以,为了学校的一个项目,我一直在尝试做一个跳跃装置。然而,我一直遇到的问题是,玩家只能漂浮在空中,而不是在达到一定的跳跃高度后倒下。

我尝试过很多方法,包括当按下up键时的正常想法,将跳跃设置为true,然后在actionPerformed方法中,将yVelocity设置为-4。但是,当单击跳转键时,我记录了当时的yPosition,当当前yPosition小于原始位置-50时,我将yVelocity设置为0,并将fallVelocity设置为1。

下面是我的actionPerformed方法中的代码:

代码语言:javascript
复制
if (jumping) {
            if (yPos <= homeY - 50) {
                yVel = 0;
                fallVel = 1;
                falling = true;
                jumping = false;
                System.out.println("bye");
            }   else {
                yVel = -JUMP_SPEED;
            }
        }
        yPos += yVel + fallVel;

“”“

以下是keyPressed方法中的代码:

代码语言:javascript
复制
if (!jumping && !falling) {
            jumping = true;
            homeY = yPos;
            count = 0;
        }

所以,我预计结果是一个玩家上升了50个像素,然后开始下降。但在程序中,只要按下向上键,播放器就会保持浮动。

EN

回答 1

Stack Overflow用户

发布于 2019-05-26 09:28:01

作为向上/向下开关,跳跃并不能真正正常工作。最好的方法是使用重力(这很容易添加)。

要增加重力,只需修改玩家的速度,每次滴答。这应该在固定时间更新循环上运行,以在不同的帧速率下产生一致的重力:

代码语言:javascript
复制
// Play with this number for rate of gravity
player.ySpeed -= 4.9; // Gravity = 9.8m/s^2

然后,对于您的跳跃,只需添加到播放器ySpeed。这将创建一个自然的抛物线跳跃。

代码语言:javascript
复制
if (jumpWasPressed) {
    player.ySpeed += 50; // play with this number for jump height
}

这种方法假设你的“地面”物体有一个热盒来防止玩家掉到地面上。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56309930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档