Hallo, ich bin ein Quereinsteiger in Java 2D Programmierung. Ich schaute mir einige Videos und Tutorials im Internet an, um etwas ahnung von 2D Programmierung zu bekommen(Buch ist bestellt, doch die neugierde ist da ).
Ich habe einen Character:
Und ich habe eine Box, mit der dieser kollidieren soll
Das ganze wird so berechnet:
Wenn mein Character nun mit der Box kollidiert, kann er sich nicht mehr bewegen(was ja auch logisch ist). Wie kann ich jedoch einfügen, dass ich ihn nachher wieder bewegen kann. Gibt es einen fertigen "rebound" algorythmus? Wenn ich seine Position nämlich um -1px erhöhe, dann kann ich ihn wieder bewegen, jedoch klappt das nur von einer der 4 Seiten. Kollidiert er in die hintere Seite, dann durchdringt mein Character die ganze Box. Oder muss ich jede Seite einzeln nehmen, und ihm dann jewils auf der x achse +1 bzw -1 hinzufügen und auf der y achse auch?
Ich hoffe, das ganze war verständlich und der Code reicht. Falls nicht, kann ich euch alles posten.
Danke, Backes!
Ich habe einen Character:
Java:
public character(){
ImageIcon i = new ImageIcon("C:/game/still.png");
character_img = i.getImage();
x= 10;
y = 172;
width = character_img.getWidth(null);
height = character_img.getHeight(null);
this.collided = false;
}
public void move(){
if(this.collided == true){
collided = false;
}else{
if(x > 1137){
x = 10;
}else if(x < 9){
x = 1130;
}else{
x = x + dx;
}
y = y + dy;
}
}
public void isCollided(Boolean collided) {
this.collided = collided;
}
public Rectangle getBounds() {
return new Rectangle(x, y, width, height);
}
Und ich habe eine Box, mit der dieser kollidieren soll
Java:
public box(){
ImageIcon i = new ImageIcon("C:/game/box.jpg");
box = i.getImage();
x=500;
y=100;
width = box.getWidth(null);
height = box.getHeight(null);
}
public Rectangle getBounds() {
return new Rectangle(x, y, width, height);
}
Das ganze wird so berechnet:
Java:
character c;
public void actionPerformed(ActionEvent e){
c.move();
checkCollisions();
repaint();
}
public void checkCollisions() {
Rectangle r2 = b.getBounds();
Rectangle r3 = c.getBounds();
if (r3.intersects(r2)) {
c.isCollided(true);
}
}
Wenn mein Character nun mit der Box kollidiert, kann er sich nicht mehr bewegen(was ja auch logisch ist). Wie kann ich jedoch einfügen, dass ich ihn nachher wieder bewegen kann. Gibt es einen fertigen "rebound" algorythmus? Wenn ich seine Position nämlich um -1px erhöhe, dann kann ich ihn wieder bewegen, jedoch klappt das nur von einer der 4 Seiten. Kollidiert er in die hintere Seite, dann durchdringt mein Character die ganze Box. Oder muss ich jede Seite einzeln nehmen, und ihm dann jewils auf der x achse +1 bzw -1 hinzufügen und auf der y achse auch?
Ich hoffe, das ganze war verständlich und der Code reicht. Falls nicht, kann ich euch alles posten.
Danke, Backes!