Jobber for tiden med en Asteroids-klone, men har problemer med å få til gravitasjon og bevegelse.
Romskipet roterer uavhengig av hvilken retning skipet beveger seg i, mens når jeg gir gass akselererer det i den retningen det peker. Det jeg prøver å få til er at dersom man f.eks snur 180 grader, for så å akselrere, skal det ta litt tid før skipet stopper, så skal det begynne å akselrere i den retningen det peker.
Metode for å tegne skipet:
Makshastighet er length=4, altså 4 piksler per steg.
Håper noen kan hjelpe med dette
Romskipet roterer uavhengig av hvilken retning skipet beveger seg i, mens når jeg gir gass akselererer det i den retningen det peker. Det jeg prøver å få til er at dersom man f.eks snur 180 grader, for så å akselrere, skal det ta litt tid før skipet stopper, så skal det begynne å akselrere i den retningen det peker.
Kode
private int length = 0; private int angle = 0; private int vel_angle = 0; private int x,y; private int vel_x,vel_y; public void keyPressed(KeyEvent e) { int key = e.getKeyCode(); if (key == KeyEvent.VK_LEFT) { angle -=10; } if (key == KeyEvent.VK_RIGHT) { angle +=10; } if (key == KeyEvent.VK_UP) { length += 1; vel_angle = angle; } if (key == KeyEvent.VK_DOWN) { length -=1; } if (key == KeyEvent.VK_SPACE) { fire(); } } public void move() { vel_x = (int) (length*Math.cos(Math.toRadians(vel_angle))); vel_y = (int) (length*Math.sin(Math.toRadians(vel_angle))); x += vel_x; y += vel_y; }
Kode
public void draw(Graphics2D g2){ super.draw(g2); g2.setColor(getSpriteColor()); g2.fill(getSpriteBody()); if(throttleOn){ g2.setColor(Color.yellow); g2.fill(getSpriteBurst()); } } superklassen: public void draw(Graphics2D g2){ AffineTransform transformer = new AffineTransform(); transformer.rotate(Math.toRadians(angle), x, y); transformer.translate(x, y); transformer.scale(scale, scale); transformer.translate(-x, -y); spriteArea = new Area(getSpriteBody()); // for handling collisions spriteArea.transform(transformer); //transform like shape g2.setTransform(transformer); }
Håper noen kan hjelpe med dette