为了好玩,我正在 java 做一个破砖游戏。在这个游戏中,球棒是一个围绕圆周的弧形。我正在努力使球棒动作正常。我正在画一个圆弧,它来自圆上的两点:
public void update(){
if(dir == 1){
angle += 0.05;
}else if(dir == 0){
angle -= 0.05;
}
x0 = a + r * Math.cos(angle);
y0 = b + r * Math.sin(angle);
x1 = a + r * Math.cos(angle - 0.1);
y1 = b + r * Math.sin(angle - 0.1);
}
public void draw(Graphics2D g){
g.setColor(Color.black);
g.fillRect(0, 0, GamePanel.WIDTH, GamePanel.HEIGHT);
int tr = (int)Math.sqrt((x0-a)*(x0-a) + (y0-b)*(y0-b));
int x = (int) (a - tr);
int y = (int) (a - tr);
int width = 2*tr;
int height = 2*tr;
int startAngle = (int) (180/Math.PI*Math.atan2(y0-b, x0-a));
int endAngle = (int) (180/Math.PI*Math.atan2(y1-b, x1-a));
g.setColor(Color.white);
g.drawArc(x, y, width, height, startAngle, endAngle);
}
从理论上讲,这应该是可行的,第二个点是从Angular 产生的稍微进一步,但弧的长度在大小上保持变化。。。?这就是问题所在。
1条答案
按热度按时间hpxqektj1#
此语句打破了模式:
使用它会更有意义
还有一种叫做g.drawarc的方法:
最后一个参数是弧的Angular ,所以我想你需要
甚至可能