我一直在使用 LWJGL Java 和 JOML 编写一款关于平台游戏的游戏。
所以输入没问题,我可以使用 WASD 并在地图上移动,但我不知道如何将其转换为 AD 和 W 重力跳跃。我不知道从哪里开始。
因此,为了设置我的播放器的 yPos,我有transform.pos.y = SOME YPOS INT。我没有重力或速度变量
package entity;
import org.joml.Vector2f;
import org.joml.Vector3f;
import org.lwjgl.glfw.GLFW;
import io.Window;
import render.Animation;
import render.Camera;
import world.World;
public class Player extends Entity{
public static final int ANIM_IDLE = 0;
public static final int ANIM_WALK = 1;
public static final int ANIM_SIZE = 2;
public Player(Transform transform) {
super(ANIM_SIZE, transform);
setAnimation(ANIM_IDLE, new Animation(1, 2, "player/idle"));
setAnimation(ANIM_WALK, new Animation(2, 5, "player/walking"));
}
@Override
public void update(float delta, Window window, Camera camera, World world) {
Vector2f movement = new Vector2f();
if(window.getInput().isKeyDown(GLFW.GLFW_KEY_A)) {
movement.add(-10*delta, 0);
}
if(window.getInput().isKeyDown(GLFW.GLFW_KEY_D)) {
movement.add(10*delta, 0);
}
if(window.getInput().isKeyDown(GLFW.GLFW_KEY_W)) {
movement.add(0, 20*delta);
}
if(window.getInput().isKeyDown(GLFW.GLFW_KEY_S)) {
movement.add(0, -10*delta);
}
move(movement);
if(movement.x != 0 || movement.y != 0)
useAnimation(ANIM_WALK);
else
useAnimation(ANIM_IDLE);
camera.getPosition().lerp(transform.pos.mul(-world.getScale(), new Vector3f()), 0.1f);
}
public void checkOnGround() {
}
}
我澄清一下,我对lwjgl不太了解,我是初学者
如果我遗漏了任何重要信息,请告诉我。任何答案都会很高兴收到
LWJGL 是一个轻量级游戏开发库,不包含内置物理库。为了仅使用 JOML 和 LWJGL 使跳跃和重力发挥作用,您将需要创建自己的碰撞检测和物理集成代码,这是一个相当困难的过程。如果你想这样做,有很多关于这个主题的书。但是,如果您是编程新手或对物理编程没有太大兴趣,我建议您寻找额外的物理包或使用包含物理代码的完整游戏引擎。