gpt4 book ai didi

java - Sprite 与物体碰撞时不会掉落?

转载 作者:行者123 更新时间:2023-12-01 14:21:26 27 4
gpt4 key购买 nike

我正在使用 LibGDX 以及它附带的 Box2D 包装器 LibGDX 制作游戏。具体来说,我的游戏是一款 2D 横向卷轴游戏。

我的问题出在我的玩家 Sprite 上。我需要玩家非常精确的移动,所以我决定将其设置为当玩家按下箭头键时,它会调用 playerBody.setLinearVelocity(),然后当他们停止按键时,它将把它们的线速度重置为 0。

在我的游戏中,我有重力。为了确保玩家在左右移动时掉落,我创建了方法 run():

public void run(float x) {
playerBody.setLinearVelocity(x, playerBody.getLinearVelocity().y);
}

当我的玩家自由落体时,这效果很好。然而,当我的玩家移动到任何静态物体(包括垂直的墙壁)时,只要我按住将它们粘在墙上的箭头键,它们就会停止下落。

有谁知道这是为什么吗?提前致谢。

此外,这是我的玩家 body 的摩擦力、密度和恢复:

friction = 0.1f
restitution = 0.01f
density = 0.4f

最佳答案

我正在考虑您的玩家 body 是动态的,并且动态 body 具有与所有静态 body 碰撞的属性。因此,如果您查看 run 方法,您将在当前播放器 LinearVelocity() 中传递播放器的前一个 LinearVelocity().y。因此,当你的玩家的 body 与静态物体发生碰撞时,其速度将变为0,碰撞后,如果其 Velocity().y 变为 0,并且你将继续在 playerBody.setLinearVelocity 中传递该 0 你的 body 不会移动。事情就是这样发生的。

public void run(float x) {
playerBody.setLinearVelocity(x, 0);
}

碰撞后。我认为如果您在 velocity().y 位置传递重力。我认为这会解决您的问题。

public void run(float x) {
playerBody.setLinearVelocity(x, gravity.y);
}

关于java - Sprite 与物体碰撞时不会掉落?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17519143/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com