Flytte sprite med keyboard
Hejsa...Jeg er ved at lege lidt med java, og jeg har et problem. Jeg er ved at få en sprite til at flytte sig ved hjælp af keyboardet. Jeg kan godt få spriten til at flytte sig frem og tilbage, samt dreje den (bruger piletasterne), men mit problem er, at når jeg flytter spriten frem eller tilbage, bliver vinklen hvor den drejer større og større.
Har koden her:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.geom.AffineTransform;
public class Tank extends Applet implements KeyListener{
private Image tank;
Point pos = new Point(200,200);
double angle = 0.00;
double vel = 0;
boolean fire = false;
public void init() {
setBackground(Color.white);
addKeyListener(this);
requestFocus();
tank = getImage(getDocumentBase(),"tank.gif");
setSize(800,600);
}
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
AffineTransform tx = new AffineTransform();
double dx = Math.sin(angle)*vel;
double dy =- Math.cos(angle)*vel;
pos.x+=dx;
pos.y+=dy;
tx.rotate(angle,pos.x+16,pos.y+16);
tx.translate(pos.x, pos.y);
g2d.drawImage(tank, tx, this);
}
public void keyPressed(KeyEvent e)
{
if (e.getKeyCode() == KeyEvent.VK_UP) vel = 8;
else if (e.getKeyCode() == KeyEvent.VK_DOWN) vel = -8;
else if (e.getKeyCode() == KeyEvent.VK_LEFT) angle -= 0.02;
else if (e.getKeyCode() == KeyEvent.VK_RIGHT) angle += 0.02;
repaint();
}
public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e) {}
}
Et eksempel kan ses på: http://www.harme.dk/tank