Hallo,
ich habe einen Shooter programmiert. Nun möchte ich die abgegebene Schüsse in Richtung der Maus abgeben. Allerdings weiß ich nicht ganz recht, wie ich vorgehen soll. Ich habe es mit
MouseInfo.getPointerInfo().getLocation().getY()
gemacht, jedoch funktioniert dies nicht so recht, ganz davon abgesehen, dass hier ja nicht nur das Spielfeld sondern der komplette Screen betrachtet wird.
Wäre euch sehr dankbar, wenn ihr mir erklären könnt wie ich dort vorgehe, oder jemand sogar ein Beispiel hat.
Mein Bullet Code ist der folgende:
Wichtig zu wissen ist glaube ich nur, dass dx und dy die jeweilige Richtungsveränderung darstellen. Ist dx = +1 geht er auf der "X-Achse +1" usw..
ich habe einen Shooter programmiert. Nun möchte ich die abgegebene Schüsse in Richtung der Maus abgeben. Allerdings weiß ich nicht ganz recht, wie ich vorgehen soll. Ich habe es mit
MouseInfo.getPointerInfo().getLocation().getY()
gemacht, jedoch funktioniert dies nicht so recht, ganz davon abgesehen, dass hier ja nicht nur das Spielfeld sondern der komplette Screen betrachtet wird.
Wäre euch sehr dankbar, wenn ihr mir erklären könnt wie ich dort vorgehe, oder jemand sogar ein Beispiel hat.
Mein Bullet Code ist der folgende:
Java:
public class Bullet extends Entity {
/**
* calls Mob
*/
public int dx ,dy ;
private boolean left;
public double damage;
private String side;
public Bullet(Texture texture, double x, double y, TileMap tileMap, double damage, String side){
super(texture, x, y+6, tileMap);
this.damage = damage;
this.side = side;
}
public void tick() {
if (dx == 0 && dy == 0){
dx =+ (int) MouseInfo.getPointerInfo().getLocation().getX();
dy =+ (int) MouseInfo.getPointerInfo().getLocation().getY();
}
move();
}
public void render(Graphics2D g, int offsetX, int offsetY) {
super.render(g, offsetX + dx, offsetY + dy + 6);
}
public void move(){
boolean horiz = tileMap.getBulletCollision(texture.getWidth(), x, y, x+dx, y, false);
boolean vert = tileMap.getBulletCollision(texture.getWidth(), x, y, x, y + dy, true);
if(!horiz){
x += dx;
y += dy;
}
if(!vert){
y += dy;
x += dx;
}
if(horiz){
tileMap.removeEntity(this);
}
if(vert){
tileMap.removeEntity(this);
}
}
}
Wichtig zu wissen ist glaube ich nur, dass dx und dy die jeweilige Richtungsveränderung darstellen. Ist dx = +1 geht er auf der "X-Achse +1" usw..