ich probiere nun seit gut 2 Stunden bei einem Shoot 'Em Up Game eine einfache Funktion einzubauen, um auf Gegner in dem Spiel zu schießen.
Die abgefeuerte Kugel soll sich zu den Koordinaten des Mauszeigers bewegen, die beim Zeitpunkt des Klicks abgespeichert werden.
Ich habe versucht das ganze über eine lineare Funktion zu lösen die zwischen den zwei Punkten verläuft, also zwischen dem Abschusspunkt und dem Mauszeiger, aber leider macht die Kugel danach irgendwas, aber nicht was sie eigentlich machen sollte.
Desweiteren ist mir aufgefallen, dass es dabei zu Problemen kommen würde falls man die gleichen X-Koordinaten oder Y-Koordinaten hat.
Falls mein Ansatz das Problem über ne lineare Funktion zu lösen falsch ist oder es einen besseren gibt, würde ich mich freuen wenn mir jemand diese Lösung verraten würde.
Anbei noch der Code für die Berechnung der lineare Funktion, also bei y = m * x + t wird m und t berechnet und wie anschließend daraus die neuen X- bzw. Y-Werte für die Kugel bestimmt werden.
Code:
Private Sub lineareFunktion()
mouseX = MousePosition.X
mouseY = MousePosition.Y
playerX = Player.Location.X
playerY = Player.Location.Y
entfernung = mouseX - playerX
If entfernung < 0 Then
entfernung = -entfernung
End If
If entfernung <> 0 Then
m = (mouseY - playerY) / entfernung
End If
t = playerY - (m * playerX)
newX = playerX
newY = playerX
End Sub
Private Sub KugelMovement()
If entfernung = 0 Then
If Kugel.Location.Y < mouseY Then
Kugel.Location = New Point(Kugel.Location.X, Kugel.Location.Y + speed)
mouseY = mouseY + speed
End If
If Kugel.Location.Y > mouseY Then
Kugel.Location = New Point(Kugel.Location.X, Kugel.Location.Y - speed)
mouseY = mouseY - speed
End If
Else
If Kugel.Location.X < mouseX Then
newX = newX + speed
Else
newX = newX - speed
End If
newY = m * newX + t
End If
End Sub






