gpt4 book ai didi

java-3d - 如何在Java3d中实现Mouse Look

转载 作者:行者123 更新时间:2023-12-01 08:04:29 27 4
gpt4 key购买 nike

我在这里不知所措。我有一个简单的地形生成算法在工作,并且通过扩展 ViewPlatformAWTBehavior 和处理我自己的事件,我有一些简单的键盘导航在工作。一切都很好,我可以跟随地形。万岁!

我想做的是让一些简单的“鼠标外观”起作用。 MouseRotate 很接近,但我正在寻找更像 FPS 的东西......在你不打算滚动相机的地方,你被限制在垂直 90 度(向上或向下),并且鼠标光标被捕获JFrame(带有转义符)。

我似乎无法让它工作。我可以很好地捕获鼠标事件,并且 mouseMoved 可以正常工作。我可能只使用一个不可见的光标,这会让我完成大部分工作(也许),但是当我试图将鼠标保持在屏幕上时我会被卡住......一旦你出去框架,鼠标将可见并停止旋转 View 。

我一直在想我一定是做错了,因为这必须是一个相当普遍的实现,但我找不到任何关于它的东西。

有没有人有一些指点或引用?

最佳答案

如果你想要,这是制作全屏窗口的代码,这将帮助你解决鼠标问题

package fullscreen;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class FullScreen extends JFrame{

private JPanel contentPane = new JPanel();
private JButton fullscreenButton = new JButton("Fullscreen Mode");
private boolean Am_I_In_FullScreen = false;
private int PrevX,PrevY,PrevWidth,PrevHeight;

public static void main(String[] args) {
FullScreen frame = new FullScreen();
frame.setSize(600,500);
frame.setVisible(true);
}

public FullScreen(){
super("My FullscreenJFrame");

setContentPane(contentPane);
//From Here starts the trick

FullScreenEffect effect = new FullScreenEffect();

fullscreenButton.addActionListener(effect);

contentPane.add(fullscreenButton);
fullscreenButton.setVisible(true);

}

private class FullScreenEffect implements ActionListener{
@Override
public void actionPerformed(ActionEvent arg0) {

if(Am_I_In_FullScreen == false){

PrevX = getX();
PrevY = getY();
PrevWidth = getWidth();
PrevHeight = getHeight();

dispose(); //Destroys the whole JFrame but keeps organized every Component
//Needed if you want to use Undecorated JFrame
//dispose() is the reason that this trick doesn't work with videos
setUndecorated(true);


setBounds(-10,-100,getToolkit().getScreenSize().width+30,getToolkit()
.getScreenSize().height+110);
setVisible(true);
Am_I_In_FullScreen = true;

}
else{
setVisible(true);

setBounds(PrevX, PrevY, PrevWidth, PrevHeight);
dispose();
setUndecorated(false);
setVisible(true);
Am_I_In_FullScreen = false;
}
}
}
}

关于java-3d - 如何在Java3d中实现Mouse Look,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6480780/

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