【发布时间】:2016-10-30 15:12:05
【问题描述】:
我正在制作一款平台游戏。跳跃和运动正在起作用,现在我想对碰撞进行编程。我对这将如何工作有一种想法:
我不确定这个问题应该在这里还是在游戏开发网站中。
我有两个 Vector2 - 速度和动量(速度是速度)。两者都是 (0, 0)。动量是每帧添加到速度的因素。
每一帧,我首先得到输入。动量根据按下的键增加和/或增加(例如:
if (Gdx.input.isKeyPressed(Keys.A)) { momentum.x -= speed; })然后我将动量乘以 0.15。这是为了让它变慢。
之后,我将速度乘以 0.8。
然后,我将动量添加到速度,以增加速度,如 这才是真正移动玩家的原因。
然后我将速度添加到玩家的位置。
为了应用重力,我将重力矢量 (0, -10) 添加到玩家的位置。
所以我需要找到一种方法来移动玩家,但不允许它与世界的任何部分重叠。世界由许多 Rectangle 实例组成。玩家的身体也是Rectangle 的一个实例。使用 Box2D 重写碰撞会更容易吗?我尝试过检查播放器在移动时是否与任何矩形重叠,如果会,则不移动它。
但这似乎并没有考虑到所有事情 - 有时它会起作用,但有时它会在触及世界之前停止。
TL;DR: 我想让我的玩家与存储为矩形网格的世界发生碰撞。我该怎么做,因为我的播放器也是一个矩形。用Box2D会不会更方便?
【问题讨论】:
-
我会将其移至游戏开发网站。我还建议学习一些物理知识。
-
@duffymo 我如何将其移至游戏开发网站?而且,我很确定我对此有足够的物理学知识,但是,也许不是
-
看了你的问题后我会拒绝。
标签: java libgdx game-physics