私のプログラムを特定のFPSに限定したいのですが、そうでなければ1台のコンピュータで高速に実行され、もう1台では遅くなるかもしれません。 FPSClock = pygame.time.Clock() FPSClock.tick(30)Java 3DでカスタムFPSを設定する方法
は、Java 3Dでこのようなものがあります -
私はpygameのダウンロードで、私がやるような何かをしたいですか? 私は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) {
}
}
ありがとうございました。そのリンクが私を大いに助けました。すべてのコンピュータで60 FPSを打つためのタイマーでプログラムを更新します。私はまだもう一つの問題を抱えています。私はPongクラスのKeyListenerとkeyPressed()、keyTyped()、keyReleased()メソッドを実装しました。それはどんな誤りも示していないし、それは働いている。私はこの問題への助けに感謝します – Thomas