如何在Java 3D中设置自定义FPS

汤玛士

我想将程序限制为某些FPS,否则它将在一台计算机上运行得更快,而在另一台计算机上运行得更慢。

我想要像pygame中一样的东西-FPSClock = pygame.time.Clock()FPSClock.tick(30)

Java 3D中是否有类似的东西?我是Java 3D的初学者,我尝试编写Pong游戏以提高自己的技能。但是,我被困住了,意识到在Java中没有适当的延迟的方法,因为您将不知道最后一帧的时间是什么。

我还发现KeyEvent在我的代码中不起作用。到目前为止,我的代码-

import com.sun.j3d.utils.universe.*;
import com.sun.j3d.utils.geometry.*;
import javax.media.j3d.*;
import javax.vecmath.*;
import java.awt.event.*;
import java.awt.event.KeyListener.*;
import java.awt.event.WindowAdapter;
import java.awt.*;
import java.applet.Applet;
public class Pong implements KeyListener {
    static float ballx = 0.0f;
    static float bally = 0.0f;
    static float ballz = 0.0f;
    static Transform3D transform2 = new Transform3D();
    static TransformGroup transformGroup2 = new TransformGroup();
    public static void main(String[] args) {
        SimpleUniverse universe = new SimpleUniverse();
        BranchGroup group = new BranchGroup();
        Appearance appearance = new Appearance();
        Color3f color = new Color3f(0.1f, 1.8f, 0.1f);
        ColoringAttributes coloringAttributes = new ColoringAttributes(color, ColoringAttributes.NICEST);
        appearance.setColoringAttributes(coloringAttributes);
        Box box = new Box(0.05f, 0.2f, 0.03f, appearance);
        Transform3D transform = new Transform3D();
        TransformGroup transformGroup = new TransformGroup();
        transformGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
        Vector3f vector = new Vector3f(-0.9f, 0.0f, 0.0f);
        transform.setTranslation(vector);
        transformGroup.setTransform(transform);
        transformGroup.addChild(box);
        Box box1 = new Box(0.05f, 0.2f, 0.03f, appearance);
        Transform3D transform1 = new Transform3D();
        TransformGroup transformGroup1 = new TransformGroup();
        transformGroup1.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
        Vector3f vector1 = new Vector3f(0.9f, 0.0f, 0.0f);
        transform1.setTranslation(vector1);
        transformGroup1.setTransform(transform1);
        transformGroup1.addChild(box1);
        group.addChild(transformGroup);
        Sphere sphere = new Sphere(0.1f);
        group.addChild(transformGroup1);
        Vector3f vector2 = new Vector3f(0.0f,0.0f,0.0f);
        transform2.setTranslation(vector2);
        transformGroup2.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
        transformGroup2.setTransform(transform2);
        transformGroup2.addChild(sphere);
        Color3f lightColor = new Color3f(1.8f, 1.9f, 0.1f);
        BoundingSphere bounds = new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0);
        Vector3f lightDirection = new Vector3f(4.0f, -7.0f, -12.0f);
        DirectionalLight light = new DirectionalLight(lightColor, lightDirection);
        light.setInfluencingBounds(bounds);
        transformGroup2.addChild(light);
        group.addChild(transformGroup2);
        Color3f ambientColor = new Color3f(1.0f, 1.0f, 1.0f);
        AmbientLight ambientLightNode = new AmbientLight(ambientColor);
        ambientLightNode.setInfluencingBounds(bounds);
        transformGroup2.addChild(ambientLightNode);
        universe.getViewingPlatform().setNominalViewingTransform();
        universe.addBranchGraph(group);
    }
    public void keyPressed(KeyEvent event) {
        if (event.getKeyChar() == 'a') {
            ballx = ballx   0.1f;
            transform2.setTranslation(new Vector3f(ballx, bally, ballz));
            transformGroup2.setTransform(transform2);
        }
    }
    public void keyReleased(KeyEvent event) {

    }
    public void keyTyped(KeyEvent event) {

    }
}
克里斯汀·迪恩(Christian Dean)

Java当然不是我的技能领域,但是从以前在Java中进行一些游戏编程开始,我相信您必须编写自己的游戏循环来控制游戏的FPS。因此,要设置自定义FPS,您必须编写一个游戏循环。我发现非常有用的文章是http://www.java-gaming.org/index.php?topic=24220.0它解释了哪些循环是不好的做法,并显示了良好的游戏循环的示例。

编辑:针对您的Key方法问题,我相信您必须在游戏循环中调用这些方法,以便它们可以不断检查键的状态。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Java 3D中设置自定义FPS

来自分类Dev

Highcharts-如何在3D散点图上的点工具提示(弹出窗口)中设置自定义内容,或如何自定义点工具提示信息?

来自分类Dev

如何在JavaFX 8中创建自定义3d模型?

来自分类Dev

如何在JavaFX 8中创建自定义3d模型?

来自分类Dev

如何在Java中设置自定义光标?

来自分类常见问题

情节:如何自定义3D散点图的符号?

来自分类Dev

情节:如何自定义3D散点图的符号?

来自分类Dev

如何在阴暗的引擎上设置自定义FPS限制

来自分类Dev

如何将自定义标记添加到 mapbox 中的 3D 建筑地图?

来自分类Dev

如何在 java netbeanas 中的 jasper 报告图像中设置自定义报告

来自分类Dev

如何在nvd3中的Y轴上设置自定义刻度和标签

来自分类Dev

如何在Java SSLEngine中设置自定义DH组以防止Logjam攻击?

来自分类Dev

如何在Vim for Java源文件中设置自定义延续行缩进

来自分类Dev

如何在.xml文件而不是.java文件中设置自定义字体?

来自分类Dev

如何在Android的Java中为弹出菜单设置自定义主题?

来自分类Dev

如何在Android的Java中为弹出菜单设置自定义主题?

来自分类Dev

如何在JFace向导(Java)中的按钮上设置自定义文本

来自分类常见问题

如何在排球请求中设置自定义标题

来自分类Dev

如何在图表中设置自定义填充颜色

来自分类Dev

如何在自定义WebViewPage中设置属性?

来自分类Dev

如何在Maven中设置JDK的自定义版本?

来自分类Dev

如何在CreateJs中设置自定义光标?

来自分类Dev

如何在JCalendar中设置自定义星期开始?

来自分类Dev

如何在自定义通知textview中设置值

来自分类Dev

如何在HTML中设置自定义tabindex

来自分类Dev

如何在Helmchart中设置自定义发布名称

来自分类Dev

如何在SwiftUI中设置自定义环境键?

来自分类Dev

如何在自定义HttpMessageHandler中设置属性?

来自分类Dev

如何在Flutter中设置自定义FontWeight值

Related 相关文章

  1. 1

    如何在Java 3D中设置自定义FPS

  2. 2

    Highcharts-如何在3D散点图上的点工具提示(弹出窗口)中设置自定义内容,或如何自定义点工具提示信息?

  3. 3

    如何在JavaFX 8中创建自定义3d模型?

  4. 4

    如何在JavaFX 8中创建自定义3d模型?

  5. 5

    如何在Java中设置自定义光标?

  6. 6

    情节:如何自定义3D散点图的符号?

  7. 7

    情节:如何自定义3D散点图的符号?

  8. 8

    如何在阴暗的引擎上设置自定义FPS限制

  9. 9

    如何将自定义标记添加到 mapbox 中的 3D 建筑地图?

  10. 10

    如何在 java netbeanas 中的 jasper 报告图像中设置自定义报告

  11. 11

    如何在nvd3中的Y轴上设置自定义刻度和标签

  12. 12

    如何在Java SSLEngine中设置自定义DH组以防止Logjam攻击?

  13. 13

    如何在Vim for Java源文件中设置自定义延续行缩进

  14. 14

    如何在.xml文件而不是.java文件中设置自定义字体?

  15. 15

    如何在Android的Java中为弹出菜单设置自定义主题?

  16. 16

    如何在Android的Java中为弹出菜单设置自定义主题?

  17. 17

    如何在JFace向导(Java)中的按钮上设置自定义文本

  18. 18

    如何在排球请求中设置自定义标题

  19. 19

    如何在图表中设置自定义填充颜色

  20. 20

    如何在自定义WebViewPage中设置属性?

  21. 21

    如何在Maven中设置JDK的自定义版本?

  22. 22

    如何在CreateJs中设置自定义光标?

  23. 23

    如何在JCalendar中设置自定义星期开始?

  24. 24

    如何在自定义通知textview中设置值

  25. 25

    如何在HTML中设置自定义tabindex

  26. 26

    如何在Helmchart中设置自定义发布名称

  27. 27

    如何在SwiftUI中设置自定义环境键?

  28. 28

    如何在自定义HttpMessageHandler中设置属性?

  29. 29

    如何在Flutter中设置自定义FontWeight值

热门标签

归档