2017-02-26 4 views
0

Ich habe versucht, einen gedrehten Feind zu machen, der sich einfach vorwärts bewegt. Der Player zeigt perfekt, aber aus irgendeinem Grund zeigt der Gegner nur, wenn ich die Rotation auf 360 oder 0 setze, obwohl die X- und Y-Positionen sich so bewegen, wie sie sollten.Java Graphics2D nur Zeichnung, wenn 0/360 Grad gedreht

package Game; 

import java.awt.Color; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.Rectangle; 

public class Enemy extends Rectangle implements GameObject { 

    private int speed; 
    private double angle; 

    public Enemy(int x, int y, int w, int h, int speed, int angle) { 
     this.x = x; 
     this.y = y; 
     this.width = w; 
     this.height = h; 
     this.speed = speed; 
     this.angle = Math.toRadians(angle); 
    } 

    @Override 
    public void update(Engine g) { 
     this.x += (speed * (float) Math.cos(angle)); 
     this.y += (speed * (float) Math.sin(angle)); 

     System.out.println(this.x + " " + this.y); 
    } 

    @Override 
    public void render(Graphics g) { 
     Graphics2D g2d = (Graphics2D) g; 
     g2d.setColor(Color.red); 
     g2d.rotate(angle); 
     g2d.fill(this); 
    } 

} 

Antwort

1

Ihre machen ändern Komponente dieser

@Override 
public void render(Graphics g) { 
    Graphics2D g2d = (Graphics2D) g; 
    g2d.setColor(Color.red); 
    g2d.rotate(this.angle); 
    g2d.fill(this); 
    g2d.draw(this); 
    this.render(g); 
} 
+1

Dies ist eine rekursive Aufruf an die 'render' Methode - wenn ich nicht etwas mit Blick auf, dann führt dies zu einer' StackOverflowError' (oder zumin am wenigsten anderes merkwürdiges Verhalten). – Marco13

Verwandte Themen