2D Problem mit Kollision bzw Winkel änderung ( Ab prallen)
Übersicht

![]() |
Broken ArrowBetreff: 2D Problem mit Kollision bzw Winkel änderung ( Ab prallen) |
![]() Antworten mit Zitat ![]() |
---|---|---|
Brauche Hilfe
Hab ein Problem mit Kollision Schläger sollen den Ball wieder zurückschleudern , können es aber nicht da der ball durch sie durchfliegt Es funktioniert Teilweise Richtig. Code: [AUSKLAPPEN] .Start Graphics 1024, 768, 0, 1 Zeiter = CreateTimer(50) Spieler_Gruen_Bild = LoadAnimImage ("SG.bmp",113,113,0,18) Spieler_Rot_Bild = LoadAnimImage ("SR.bmp",113,113,0,18) Mitte = LoadImage ("Mitte2.bmp") Ball_Bild = LoadImage ("Ball.bmp") Begrenzung_O = LoadImage ("BO.bmp") Begrenzung_U = LoadImage ("BU.bmp") KO_RING = LoadImage ("Ko Ring.bmp") MidHandle Spieler_Gruen_Bild MidHandle Spieler_Rot_Bild MidHandle Mitte MidHandle Ball_Bild Spieler_Gruen_X = 60 Spieler_Gruen_Y = 768/2 Geschwingigkeit_Gruen = 4 Geschwingigkeit_Rot = 4 Winkel_gruen= 0 Spieler_Rot_X = 1024 - 60 Spieler_Rot_Y = 768/2 Winkel_Rot= 0 neue_kugel= True Type Kugeln Field x Field y Field Speed Field Winkel Field Kreis_Zeit End Type Repeat Cls zaehler = zaehler + 1 If zaehler > 50 Then Goto neue_Kugel_machen .Spiel If KeyDown (1) Then End If KeyDown (17) Then Spieler_Gruen_Y = Spieler_Gruen_Y - Geschwingigkeit_Gruen If KeyDown (31) Then Spieler_Gruen_Y = Spieler_Gruen_Y + Geschwingigkeit_Gruen If KeyDown (32) Then Winkel_Gruen = Winkel_Gruen + 1 If KeyDown (30) Then Winkel_Gruen = Winkel_Gruen - 1 If Winkel_Gruen < 0 Then Winkel_Gruen = 17 If Winkel_Gruen > 17 Then Winkel_Gruen = 0 If KeyDown (200) Then Spieler_Rot_Y = Spieler_Rot_Y - Geschwingigkeit_Rot If KeyDown (208) Then Spieler_Rot_Y = Spieler_Rot_Y + Geschwingigkeit_Rot If KeyDown (205) Then Winkel_Rot = Winkel_Rot + 1 If KeyDown (203) Then Winkel_Rot = Winkel_Rot - 1 If Winkel_Rot < 0 Then Winkel_Rot = 17 If Winkel_Rot > 17 Then Winkel_Rot = 0 DrawImage Spieler_Gruen_Bild,Spieler_Gruen_X,Spieler_Gruen_Y,Winkel_Gruen DrawImage Spieler_Rot_Bild,Spieler_Rot_X,Spieler_Rot_Y,Winkel_Rot DrawImage Mitte,1024/2,768/2 For Kugel.Kugeln = Each Kugeln If ImagesCollide(Ball_Bild,Kugel\X,Kugel\Y,0,Begrenzung_O,32,0,0) Kugel\Winkel = 360 - Kugel\Winkel EndIf If ImagesCollide(Ball_Bild,Kugel\X,Kugel\Y,0,Begrenzung_U,32,768-76,0) Kugel\Winkel = 360 - Kugel\Winkel EndIf If ImagesCollide (Ball_Bild,Kugel\X,Kugel\Y ,0,Spieler_Rot_Bild,Spieler_Rot_X,Spieler_Rot_Y,Winkel_Rot) Kugel\Winkel = 360 - Kugel\Winkel EndIf If ImagesCollide (Ball_Bild,Kugel\X,Kugel\Y ,0,Spieler_Gruen_Bild,Spieler_Gruen_X,Spieler_Gruen_Y,Winkel_Gruen) Kugel\Winkel = 180 - Kugel\Winkel EndIf Kugel\Kreis_zeit = Kugel\Kreis_zeit + 1 If ImagesCollide (Ball_Bild,Kugel\X,Kugel\Y,0 ,Mitte,1024/2,768/2,0 ) And Kugel\Kreis_zeit > 70 Kugel\Winkel = 360 - Kugel\Winkel - Kugel\Winkel EndIf If Kugel\Winkel > 360 Then Kugel\Winkel = 0 If Kugel\Winkel < 0 Then Kugel\Winkel = 360 Kugel\X = Kugel\X + Cos (Kugel\Winkel) * Kugel\Speed Kugel\Y = Kugel\Y - Sin (Kugel\Winkel) * Kugel\Speed DrawImage Ball_Bild,Kugel\X,Kugel\Y Next DrawImage Begrenzung_O,32,0 DrawImage Begrenzung_U,32,768-76 WaitTimer (Zeiter) SetBuffer BackBuffer () Flip Until KeyDown (2) Goto Spiel .neue_Kugel_machen Kugel.Kugeln = New Kugeln Kugel\X = 1024/2 Kugel\Y = 768/2 Kugel\Speed = 6 Kugel\Winkel = Rand (1,360) neue_kugel = False zaehler = 0 If Kugel\Winkel = 90 Then Kugel\Winkel= Rand (1,360) Goto Spiel [quote][/quote] |
||
- Zuletzt bearbeitet von Broken Arrow am Mi, Mai 07, 2008 19:27, insgesamt einmal bearbeitet
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Rechne bei der Kollision mit dem Schläger (Soll ja glaub Pong werden) *-1. Einfallswinkel=Ausfallswinkel.
Ich zeig dir mal n'Auszug aus meinem Pongclone: Code: [AUSKLAPPEN] b\flieg_x=(b\flieg_x * -1) b\flieg_y=(b\flieg_y * -1) + (eins\y-b\y)/10*-1 b ist das Ballhandle, "eins" einer der Spieler. Bei flieg_y habe ich noch so gemacht, dass es je weiter es am Rand ist desto mehr Abweichung hat es. Hoffe ich konnte dir helfen und bin der erste der antwortet. xD EDIT: OMG! Verwende kein Goto sondern Funktionen! Gewöhn dir Goto gleich wieder ab! Pfui! |
||
![]() |
Broken Arrow |
![]() Antworten mit Zitat ![]() |
---|---|---|
Versteh ich nicht
was ist flieg ? was ist Ball Handle ? kann man ball Handle auf Deutsch übersetzen (bin neu) |
||
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bla, b\ ist halt der Ball-Type. b\fliegx bzw b\fliegy ist die x bzw y Geschwindigkeit. | ||
![]() |
Broken Arrow |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe das kompett anders geschrieben
muss ich jetzt alles ändern? Ich hab dass mit winkeln gibt es da ne andere Lösung |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group