当前位置: 首页 > 知识库问答 >
问题:

Java2D游戏-只有当玩家在地面上跳跃

白宏义
2023-03-14

我正在做一个2D平台,只是增加了重力

然而,如果空格键在玩家完成跳跃后仍然被按住,玩家就会在半空中继续跳跃。

我知道我需要检查球员是否真的在地面上,但当我这样做时,它总是返回“false”,如我的跳跃方法所述:

// Controls both falling and the jumping action.
// The MapObject list is a collection of every object the player can
// collide with on that map. Currently it only contains a single 'ground' object.

    public void fall(ArrayList<MapObject> objects)
{
    int distance = 0;

    if (jumpTicks > 0)
    {
        float jumpHeight = jumpSpeed * (jumpTicks / maxJumpTicks);
        System.out.println(jumpTicks + "/" + maxJumpTicks + " = " + jumpHeight);
        y -= jumpHeight;
        jumpTicks--;
    }
    else
    {
        for (MapObject obj : objects)
        {
            if (this.y + this.height >= obj.y)
            {
                // This cancels falling if the player's feet are on top
                // of the ground, but for some reason setting an 'isOnGround'
                // boolean to 'true' here and checking for it in the 'jump()'
                // method does not work, it's always 'false'.
                return;
            }
            distance = obj.y - (this.y + this.height);
        }
        if (distance > fallSpeed)
        {
            y += fallSpeed;
        }
        else
        {
            y += distance;
        }

    }
}

// This doesn't make the player jump, it just adds jump time to the player
// if it's not already jumping.

public void jump()
{
    if (jumpTicks > 0)
    {
        return;
    }
    this.jumpTicks = maxJumpTicks;
    this.jumpSpeed = 10;
}

共有1个答案

宓季同
2023-03-14

在你改变他的速度之前,检查他在地板上的y

function jump() {
    if (jumpTicks > 0) {
        return;
    }
    if (this.y === floorY) {
        this.jumpTicks = maxJumpTicks;
        this.jumpSpeed = 10;
    }
}
 类似资料:
  • 我正在开发一个MMO射击游戏,类似于Python 2.7中的疯狂之神游戏。 游戏的玩家数据将包括每个玩家佩戴的装备、玩家姓名等。因此,当他们注销角色时,他们的玩家数据将被永久保存和保存,当他们再次登录时,他们的玩家数据将被加载到游戏中。为了安全起见,我估计唯一玩家数据条目的数量将为100万个条目。 将所有球员数据存储在一个巨大的txt文件中,或者26个文件,或者26*26个文件中,效率会更高吗?排

  • 游玩UMD™游戏     开始游玩游戏 1. 插入UMD™。 2. 选择 (游戏) > (UMD™)。 离开游戏 于游玩时按下PS按钮(HOME(归返)按钮)。请遵循画面指示,正确操作。 关于保存数据 保存数据会保存至Memory Stick™,并于(管理保存数据)显示。

  • 到目前为止,每当我按下空格时,我都会跳跃。我如何才能让它只在我站在某物上时跳跃?我会创建一些变量吗,比如站立和跳跃?如果我这样做了,如何在我的类播放器中引用它们?这是我的代码,感谢所有帮助。谢谢大家。

  • 《游戏跳跃》是一款模拟开发游戏的放置游戏,和《卡牌冒险》《稳定宝石放置》一样,用的同一个增量游戏开发模板开发的。

  • 所以,在学校的一个项目中,我一直在尝试建立一个跳跃机制。然而,我一直面临的问题是,玩家可以只是四处漂浮,而不是在达到某个跳跃高度后摔倒。 我尝试过很多东西,包括按下up键时的正常想法,设置跳转等于true,然后在actionPerform方法中,将yVelester设置为-4。但是,当单击跳转键时,我记录了当时的yPotions,当当前的yPotions小于原始位置-50时,我将yVelSpeed

  • 我正在开发一个基于2D图块的游戏,其中所有图块旋转45度。 我想这样做: 原因是为了在2D游戏中创建不同的视角。 有相当多的基于瓷砖的游戏教程,但我不知道有像这样的旋转瓷砖。 所以我的问题是:如何创建旋转45度的瓷砖?我会感谢任何代码或链接。 编辑:忘了说我用的是Java Graphics2D,不是OpenGL