Er kriegt es nicht mal mit einer GUI hin und du kommst mit GDI+ ?
Schöner wäre es, da hast du recht, aber da wird er sich wohl vorerst die Zähne dran ausbeisen.
Wieso? Ist doch alles logisch aufgebaut bei GDI+
Quote:
Originally Posted by WiiZocker
...Wie schaffe ich es das der Ball von dem Spieler Apprallt?...
Nunja, du müsstes nur die Position des Balles mit der Position der Schlägers vergleichen, Beispiel Pseudocode:
if abs($posBall - $posSchläger) = 0 then abprallen()
Um nun einen realistisches Abprallen zu berechnen, musst du den Einfallswinkel des Balles erfassen. Es gilt dabei Einfallswinkel = Ausfallswinkel.
Tja dann kannst du noch das andrehen des Balles mit einbeziehen, also wenn du den Schläger im Moment des Aufpralles bewegst... aber ich glaub das würde hier jetzt zuweit führen
Im Grunde alles nur eine Spielerei mit Mathematischen Grundkentnissen...
Ok, es ist schomn gelöst, also das ursprüngliche, aber da ich nicht noch nen Thread posten will, frag ich hier nochmal^^
Hier mal Zittiert was auf der 1sten Seite geschrieben steht.
Das ist einen ganz simple Collisionsfunktion:
PHP Code:
Func Collision($x1,$y1,$width1,$high1,$x2,$y2,$width2,$high2) $hpos1=$y1+$high1 $wpos1=$x1+$width1 $hpos2=$y2+$high2 $wpos2=$x2+$width2 if (($hpos1>=$y2 and $y1<$y2) or ($hpos2>=$y1 and $y1>$y2)) Then if (($wpos1>=$x2 and $x1<$x2) or ($wpos2>=$x1 and $x1>$x2)) then return true else return false endif else return false endif EndFunc
#region Constants ; Diese Werte kann man aus dem Bild direkt auslesen ; Sagen wir also dein Bild Ball.bmp ist 22 Pixel hoch und 30 breit ; Dann musst du auch dementsprechend das machen: ; $Width_Ball=30 ; $High_Ball=22 Const $Width_Spieler=164 Const $Width_Ball=32 Const $Width_Gegner=64
While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch if(Collision($X_BallPos,$Y_BallPos,$Width_Ball,$High_Ball,$X_Spieler,$Y_Spieler,$Width_Spieler,$High_Spieler)) Then MsgBox(0,,"Ball berührt","Ball hat Spieler berührt.") EndIf if(Collision($X_BallPos,$Y_BallPos,$Width_Ball,$High_Ball,$X_Gegner,$Y_Gegner,$Width_Gegner,$High_Gegner)) Then MsgBox(0,,"Ball berührt","Ball hat Gegner berührt.") EndIf WEnd
Func Collision($x1,$y1,$width1,$high1,$x2,$y2,$width2,$high2) $hpos1=$y1+$high1 $wpos1=$x1+$width1 $hpos2=$y2+$high2 $wpos2=$x2+$width2 if (($hpos1>=$y2 and $y1<$y2) or ($hpos2>=$y1 and $y1>$y2)) Then if (($wpos1>=$x2 and $x1<$x2) or ($wpos2>=$x1 and $x1>$x2)) then return true else return false endif else return false endif
EndFunc
P.S.
Welches Objekt bei der Collisions-Abfrage zuerst kommt ist egal, du kannst also zuerst die Werte vom Ball eintragen und dann die Werte vom Spieler oder andersrum, das spielt keine Rolle.
Ich habe ja dran rumprobiert aber entweder fliegt der ball durchs feld oder bleibt im spieler stecken.
Wollte auch nur wissen ob Shadow vllt nen fehler gemacht hat im skript.Ich erkenne da zwar keinen aber...Wer weiß
Und bis das game fertig ist wird noch zeit vergehen. ;D
Wenn du die Bilder mal mit hochlädst schau ich es mir genauer an.
Ein Fehler bei meiner Funktion gibts sicherlich nicht, aber vielleicht hast du was falsch gemacht.
Wie gesagt komplettes Skript+Bilder.
@| Moep |
Solange es so dumme gibt wie mich, wird er es nicht alleine machen wollen.
#region Constants ; Diese Werte kann man aus dem Bild direkt auslesen ; Sagen wir also dein Bild Ball.bmp ist 22 Pixel hoch und 30 breit ; Dann musst du auch dementsprechend das machen: ; $Width_Ball=30 ; $High_Ball=22 Const $Width_Spieler=121 Const $Width_Ball=22 Const $Width_Gegner=121
GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ###
While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch Start() sleep(20) WEnd
Func SpielerNachLinks() If $X_Spieler > 15 Then $X_Spieler = $X_Spieler - 7 GUICtrlSetPos($Spieler,$X_Spieler,$Y_Spieler) EndIf EndFunc
Func SpielerNachRechts() If $X_Spieler < 295 Then $X_Spieler = $X_Spieler + 7 GUICtrlSetPos($Spieler,$X_Spieler,$Y_Spieler) EndIf EndFunc
Func BallBewegen() if $down=1 Then $Y_Ball = $Y_Ball + 8 else $Y_Ball = $Y_Ball - 8 EndIf If $Y_Ball >= $Verloren Then MsgBox(0,"Verloren","Du hast Verloren") Exit EndIf GUICtrlSetPos($Ball,$X_Ball,$Y_Ball) EndFunc
Func Collision($x1,$y1,$width1,$high1,$x2,$y2,$width2,$high2) $hpos1=$y1+$high1 $wpos1=$x1+$width1 $hpos2=$y2+$high2 $wpos2=$x2+$width2 if (($hpos1>=$y2 and $y1<$y2) or ($hpos2>=$y1 and $y1>$y2)) Then if (($wpos1>=$x2 and $x1<$x2) or ($wpos2>=$x1 and $x1>$x2)) then return true else return false endif else return false endif
EndFunc
Func Start() if Collision($X_Spieler,$Y_Spieler,$Width_Spieler,$High_Spieler,$X_Ball,$Y_Ball,$Width_Ball,$High_Ball)==true Then $down=0 EndIf if Collision($X_Ball,$Y_Ball,$Width_Ball,$High_Ball,$X_Gegner,$Y_Gegner,$Width_Gegner,$High_Gegner)==true Then $down=1 EndIf BallBewegen() EndFunc
Kleiner Tipp noch von mir.
Bau in deinen Script noch ein paar Winkelberechnungen ein, so das der Ball auch mal seinen Kurs ändert. (Sin und Cos werden dir helfen)
Danke Shadow, ohne dich wäre ich wohl aufgeschmissen...
Quote:
Kleiner Tipp noch von mir.
Bau in deinen Script noch ein paar Winkelberechnungen ein, so das der Ball auch mal seinen Kurs ändert. (Sin und Cos werden dir helfen)
Das hatte ich auch vor ;D nur wie genau funktioniert Sin und Cos, hab dazu nichts nützliches gefunden.Weder in Google noch hier.
Von der Autoit hilfe fühl ich mich auch ned gerade geholfen.
Push.
Sorry aber musste ich pushen, finde echt kein tut dazu und hatten sinus und cosinus noch nicht in der schule. 9 schuljahr fängt gerade an.
Eigentlich sind wir ja kein Hausaufgabenforum, aber das zählt ja nicht dazu, also:
Sehr schöne Seite:
Seite bei der du deine Ergebnisse "überprüfen" lassen kannst:
target verschieben 04/18/2010 - World of Warcraft - 4 Replies Hi ich hab mir so ein pack sozusagen downgelodet von rapid frames und nun wollt ich kurz fragen wie man dies hier verschiebt
http://img232.imageshack.us/img232/5009/unbenannt di.png
hab auch leider keine ahnung welches addon das ist
Angelfertigkeit verschieben? 11/01/2009 - Metin2 Private Server - 1 Replies Hallo
ich spiele auf Metin35 und will einen Angelbot benutzen.
Das Problem ist nur das ich die Angelfertigkeit nicht verschieben kann, und bei denn meisten Bot´s muss man die ja auf F4 legen.
Denke net das ich zu blöd bin da ich auf DE server und so das schon tausendma gemacht hab^^:D
also wie es geht weiß ich schon, aber i.wie is das bei mir fest, also nicht verschiebbar.
Kann das an der deutschen exe liegen oder was könnte das für gründe haben?
Hoffe mir kann jemand Helfen.:confused:
NPC verschieben 10/04/2009 - Metin2 Private Server - 0 Replies hallo
ich würde gerne wissen wie man npcs verschieben kann ;)
also z.b. den schmied auf den dorfplatz setzten oder so^^
suchen kann man ja nich weil bei npc sinds zu wenig buchstaben xD
wenns so ein thema schon gibt könnte pls jemand den link posten
thx nick
Quartz Bar verschieben 10/10/2007 - World of Warcraft - 9 Replies So, da ich mein interface überarbeitet hab, will ich von der castbar von Bongos auf die Quartz umsteigen...nur wie kann man die casting bar verschieben und die kleine ausmachen ;/
Verschieben 05/12/2005 - General Gaming Discussion - 4 Replies Kann man das spiel mal aus dem Upcomming releases raus kopieren in ne andere Kategorie oder ne Eigene erstellen?
Das sieht aus als leben wir hinterm Mond.