GLFW 3:如何用ScrollCallback (LWJGL 3)获取鼠标滚轮的增量

GLFW 3:如何用ScrollCallback (LWJGL 3)获取鼠标滚轮的增量

我是跟随本教程的3D游戏开发与LWJGL和OpenGL。在本系列中,讲师使用LWJGL 2,而我使用LWJGL 3和GLFW。在某一节中,他只使用LWJGL 2中提供的LWJGL的输入实现,所以我不得不使用GLFW的回调系统。我能够为键输入、光标移动和鼠标按钮输入添加输入功能,但当我尝试添加滚动回调时,偏移量似乎只返回-1和1用于滚动方向,而当添加时,(第3人称)摄像机无限期地向前和向后转换,其意图是对于每一个滚动运动,相机向前或向后转换一定的距离。实际上,我希望得到每个滚动运动的增量值。在此之前,我曾试图查看是否可以将偏移量值设置为一定的延迟时间,然后将其设置为0,但没有效果。我试着寻找答案,但没有发现任何与我的问题相关的东西。我可能很蠢,但这是密码。

MouseScroll回调类:

代码语言:javascript运行复制import org.lwjgl.glfw.GLFWScrollCallback;

public class MouseScroll extends GLFWScrollCallback {

private static float XScroll;

private static float YScroll;

private static float DXScroll;

private static float DYScroll;

@Override

public void invoke(long window, double xoffset, double yoffset) {

XScroll = (float) xoffset;

YScroll = (float) yoffset;

// Don't know how to achieve this here

}

/* Returns raw offset values */

public float getXScroll() {

return XScroll;

}

public float getYScroll() {

return YScroll;

}

/* Returns the rate of each scrolling movement */

public float getDXScroll() {

return DXScroll;

}

public float getDYScroll() {

return DYScroll;

}

}获取输入类中的YScroll的方法:

代码语言:javascript运行复制public static float getMouseYScroll() {

return mouseScroll.getYScroll(); // mouseScroll is reference to MouseScroll callback

}方法在Camera.java中使用回调:

代码语言:javascript运行复制private void calculateZoom() {

float zoomLevel = Input.getMouseYScroll() * 0.1f;

distanceFromPlayer -= zoomLevel;

}Camera.java中的更新方法:

代码语言:javascript运行复制public void move() {

calculateZoom();

calculatePitch();

calculateAngleAroundPlayer();

float horizontalDistance = calculateHorizontalDistance();

float verticalDistance = calculateVerticalDistance();

calculateCameraPosition(horizontalDistance, verticalDistance);

this.yaw = 180 - (player.getRotY() + angleAroundPlayer);

} 最后,有一个camera.move()被调用为每一个循环迭代。

相关推荐

为什么有人天生皮肤白
365bet提款时间

为什么有人天生皮肤白

📅 10-11 👁️ 8431
深圳市唯喀科技有限公司店铺二维码
365bet提款时间

深圳市唯喀科技有限公司店铺二维码

📅 10-05 👁️ 4887
小说app哪个最全免费,十大免费看小说软件
365体育投注备用网站

小说app哪个最全免费,十大免费看小说软件

📅 08-08 👁️ 9960