So wurden wir vor kurzem damit beauftragt, mehrere Kreise zu codieren, die sich wie Roboter in einer GUI-Schnittstelle verhalten. Grundsätzlich ein Robotersimulator.Wie erkennt man die Wandkollision und rotiert den Roboter um 90 Grad?
Ich habe den Code in mehreren Kreisen spawnen, die wie Roboter agieren können.
Dies ist mein aktueller Code für Wand Kollision zwischen dem Roboter zu erfassen und dem Ende des Platzes:
private void checkCollisions(double maxX, double maxY) {
for (ListIterator<Ball> slowIt = balls.listIterator(); slowIt.hasNext();) {
Ball b1 = slowIt.next();
// check wall collisions:
double xVel = b1.getXVelocity();
double yVel = b1.getYVelocity();
if ((b1.getCenterX() - b1.getRadius() <= 0 && xVel < 0)
|| (b1.getCenterX() + b1.getRadius() >= maxX && xVel > 0)) {
b1.setXVelocity(-xVel);
}
if ((b1.getCenterY() - b1.getRadius() <= 0 && yVel < 0)
|| (b1.getCenterY() + b1.getRadius() >= maxY && yVel > 0)) {
b1.setYVelocity(-yVel);
}
for (ListIterator<Ball> fastIt = balls.listIterator(slowIt.nextIndex()); fastIt.hasNext();) {
Ball b2 = fastIt.next();
final double deltaX = b2.getCenterX() - b1.getCenterX() ;
final double deltaY = b2.getCenterY() - b1.getCenterY() ;
if (colliding(b1, b2, deltaX, deltaY)) {
bounce(b1, b2, deltaX, deltaY);
}
}
}
}
Die
b1.setXVelocity(-xVel);
b1.setYVelocity(-yVel);
sind die wichtigsten Bits, die den Kreis zurückprallen von dem machen Mauer. Aber stattdessen möchte ich, dass der Ball die Wand erkennt und sich um 90 Grad dreht, anstatt wie ein springender Ball von der Wand zurück zu springen.
Jede Hilfe wird voll und ganz geschätzt oder ein funktionierender Code, der das für mich tun kann. Ich habe eine AryListe aller Bälle, die "Bälle" genannt werden.
Bei Bedarf kann ich Quellcode geben.
Das ist was ich bisher habe. Aber ich brauche jeden Ball, an dem ein Sensor angebracht ist, der erkennt, ob dort eine Wand steht.
https://i.stack.imgur.com/XsQvX.png
yeahh, es ist eine seltsame Situation, es sei denn, es gibt eine andere Art, es mit einem Sensor zu tun, der aus dem Kreis kommt, der erkennt, ob eine Wand davor ist, und so rotiert es? aber ich bin mir nicht sicher, wie ich das machen soll –