跳跃和重力LWJGL

问题描述 投票:0回答:1

我一直在使用 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不太了解,我是初学者
如果我遗漏了任何重要信息,请告诉我。任何答案都会很高兴收到

java opengl game-physics lwjgl joml
1个回答
0
投票

LWJGL 是一个轻量级游戏开发库,不包含内置物理库。为了仅使用 JOML 和 LWJGL 使跳跃和重力发挥作用,您将需要创建自己的碰撞检测和物理集成代码,这是一个相当困难的过程。如果你想这样做,有很多关于这个主题的书。但是,如果您是编程新手或对物理编程没有太大兴趣,我建议您寻找额外的物理包或使用包含物理代码的完整游戏引擎。

© www.soinside.com 2019 - 2024. All rights reserved.