Eine einfache Kollision in Processing Java zB Schuss und spieler?

...... - (Computer, Technik, Spiele und Gaming)

1 Antwort

1) Schau mal, wieso deine Variablen rot unterstrichen werden. Sind das Syntaxfehler oder liegt es nur an der Rechtschreibkorrektur?

2) Was meinst du, passiert in diesen Zeilen:

Schussy + 2.5;
Spielery +1

?

In jedem Fall wird der Wert der Variablen mit dem konstanten Wert (2,5 oder 1) addiert und danach wieder weggeschmissen.

3) Deine Logik ist falsch. Angenommen, der Schuss befindet sich in S(1/2) und der Spieler befindet sich bei P(2/1). In beiden Fällen ist die Summe aus x- und y-Koordinate 3, doch beide Punkte kollidieren nicht miteinander.

Prüfe in der draw-Funktion, ob die Koordinaten beider Punkte gleich sind. Arbeite dabei aber nicht mit Fließkommazahlen sondern dem Integer-Typ, da sollte völlig ausreichen und erspart dir das Risiko von Rundungsfehlern.

alksdpodksd 
Fragesteller
 16.08.2017, 22:00

Ok werde ich machen
Wie würdest du den machen ?
Ganz simple
Mit freundlichen Grüßen

0
regex9  16.08.2017, 22:05
@alksdpodksd

Genauso- Wort für Wort, wie ich es im letzten Absatz geschrieben habe.

0
alksdpodksd 
Fragesteller
 16.08.2017, 22:56
@regex9

ich habs mal so ausprobiert:

if((schussx1 == balkenx) && (schussy1 == balkeny)){

}

aber funktioniert nicht :(

ich wäre dir extrem dankbar wenn du mir ein SourceCode schreiben würdest :)

0
regex9  16.08.2017, 23:04
@alksdpodksd

Das kann nur bedeuten, dass eine Überschneidung der Werte nie zutrifft. Lass dir doch einmal die Werte der Variablen zur Laufzeit in der Konsole ausgeben und überprüfe vor allem, ob sie sich überhaupt einmal in die gewünschte Richtung verändern.

0
alksdpodksd 
Fragesteller
 16.08.2017, 23:35
@regex9

sie bewegen sich in die gewünschte richtung 

schussy1 + 2;

das heisst in dem fall, dass es sich nach unten bewegt 

balkenx +1;

das heisst, dass der spieler nach rechts bewegt 

ich werde noch wahnsinnig 

ich hab so viele möglichkeiten ausprobiert aber ohne erfolg

soll ich dir am besten den ganzen code schicken?

0
alksdpodksd 
Fragesteller
 17.08.2017, 00:45

Ich hab hier ein beispiel gemacht:

float balkenx;
float balkeny;

float schussx;
float schussy;

void setup() {

   size(500,500);
   background(0);
balkeny = 230;
balkenx + 1;
schussx = 200;
}
void draw(){
schussy = 2.5;
rect(schussx,schussy,20,20);
rect(balkenx,balkeny,20,20);

if(mousePressed){
balkenx = balkenx + 1;
}
}

0
regex9  17.08.2017, 00:56
@alksdpodksd

Wo ist da ein Koordinatenvergleich und noch viel wichtiger: Wo bewegt sich da etwas, außer die horizontale Position des Balkens bei Drücken der Maustaste?

Ein Punkt kann sich nie mit einem anderen Punkt überschneiden, wenn er nicht die gleichen Koordinaten erreicht. Das hättest du spätestens dann gesehen, wenn du dir, wie ich dir geraten habe, die Werte zur Laufzeit einmal über die Konsole hättest ausgeben lassen.

1
Etter  17.08.2017, 01:43
@regex9

Und deswegen gibt es Hitboxen ^^.

0
alksdpodksd 
Fragesteller
 17.08.2017, 00:52

Schussy + 2.5; anstatt Schussy = 2.5;
Es soll sich ja bewegen

0
regex9  17.08.2017, 00:53
@alksdpodksd

Wird es aber nicht, das habe ich dir bereits in meiner ersten Antwort oben erklärt.

1