【发布时间】:2014-07-14 13:43:04
【问题描述】:
所以我想开始开发一款 2D 平台游戏,而我要到明年才能从事物理学工作,所以我在一本旧物理书中找到了方程式,我不得不帮助找到 x 和 y 位置以及他们的速度。问题是,它们似乎加速太快,因为渲染太慢了。这不是程序的错,是我的错,因为我不知道如何减慢加速速度以使其看起来更顺畅。这是我正在使用的球类的代码(我知道代码绝对是一团糟!我只是在乱七八糟地试图让方程式正确......如果我在工作,我永远不会这样写我的代码在一个严肃的项目上,所以请不要提醒我它看起来很糟糕)
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JComponent;
public class Ball extends JComponent{
public double xpos;
double oX;
double oY;
double ypos;
double xvel;
double yvel;
long time;
double oxvel;
double oyvel;
long angle = 45;
long startTime = System.currentTimeMillis();
public Ball(int p1, int p2, long t){
xpos = p1;
oxvel = 50;
oX = p1;
ypos = p2;
time = t;
oyvel = -50;
}
public void update(){
xvel = (oxvel*Math.cos(45));
yvel = (oyvel*Math.sin(45)) + (9.8*time);
if(!(xpos + xvel + 10 > getWidth())&&!(xpos + xvel < 0))
xpos +=xvel;
if(!(ypos + yvel + 10 > getHeight())&&!(ypos + yvel <= 0))
ypos+=yvel;
time++;
}
public void paint(Graphics g){
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(Color.RED);
g2d.fillOval((int)xpos, (int)ypos, 15, 15);
}
}
【问题讨论】:
-
您的物理特性似乎与渲染速率密切相关。这很可能是你的问题。此外,为什么时间是整数(或长整数)而不是双精度数?
-
1- 确保您在某个时候调用
repaint以便重新绘制组件,并且 2- 使用paintComponent或paint,因为您正在破坏绘制链,它可以导致一些奇怪和 3- 在执行任何自定义绘画之前调用super.paintComponent
标签: java physics projectile