flüssigere bewegung
Übersicht

![]() |
MikeDeeBetreff: flüssigere bewegung |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hoff ich nerv nicht mit meiner inzwischen, glaub, 5. anfrage ![]() Das "Ziel" soll sich flüssiger bewegen und nicht so zittern, außerdem soll es, wenn es sich nach rechts bewegt nicht nach links bewegen und wenn es sich nach links bewegt nicht nach recht, oben und unten das gleiche Code: [AUSKLAPPEN] Graphics 1024,768,16,1 SetBuffer BackBuffer() SeedRnd MilliSecs() zx = Rand(0,1004) zy = Rand(0,748) ;Hauptschleife Repeat Cls HidePointer ;Maus zeichnen mx = MouseX() my = MouseY() Color 255,0,0 Oval mx,my,5,5,1 ;Ziel zeichnen Color 0,0,225 Rect zx,zy,20,20,1 ;Zielkolission If mx>zx And mx<zx+20 And my>zy And my<zy+20 And MouseHit(1) Then zx = Rand(0,1004) : zy = Rand(0,748) Punkte = Punkte + 1 Else zx=Rand(zx-1,zx+1) zy=Rand(zy-1,zy+1) EndIf If zx+1<>zx-1 Then zx=zx+1 EndIf If zx-1<>zx+1 Then zx=zx-1 EndIf If zy+1<>zy-1 Then zy=zy+1 EndIf If zy-1<>zy+1 Then zy=zy-1 EndIf ;Zielbewegung If zx < 0 Then zx = 1023 If zx > 1023 Then zx = 0 If zy < 0 Then zy = 767 If zy > 767 Then zy = 0 ;Punkte schreiben Color 255,255,255 Text 512,0,"Punkte"+Punkte Flip Until KeyHit(1) End |
||
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du wirst einen komplett anderen Ansatz als diesen brauchen:
Code: [AUSKLAPPEN] zx=Rand(zx-1,zx+1)
zy=Rand(zy-1,zy+1) Zum Beispiel: Code: [AUSKLAPPEN] If Millisecs()-zieltimer>500 Then
zrichtung=Rand(0,3) zieltimer=Millisecs() Endif Select zrichtung Case 0 zx=zx+1 Case 1 zx=zx-1 Case 2 zy=zy+1 Case 3 zy=zy-1 End Select Oder wenn du etwas weiter gehen willst: WayPoints. Kommt auch drauf an, was du am Ende haben willst. [EDIT] Diesen Teil kannst du meiner Meinung nach weglassen: Code: [AUSKLAPPEN] If zx+1<>zx-1 Then
zx=zx+1 EndIf If zx-1<>zx+1 Then zx=zx-1 EndIf If zy+1<>zy-1 Then zy=zy+1 EndIf If zy-1<>zy+1 Then zy=zy-1 EndIf [/EDIT] mfG, Christoph. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
MikeDee |
![]() Antworten mit Zitat ![]() |
---|---|---|
so gehts natürlich auch, wenn man es vorher weiß^^
und wie vermeide ich nun das es sich nach links bewegt wenn es sich nach rechts bewegt und wenn es sich nach rechts bewegt das es sich nicht nach links bewegt usw.? |
||
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit Nachdenken ![]() Einmal helf ich dir noch, aber die nächsten Probleme versuchst du am besten HIER zu lösen. Statt zrichtung=Rand(0,3) machst du diesen Block: Code: [AUSKLAPPEN] oldzrichtung=zrichtung
Repeat zrichtung=Rand(0,3) If oldzrichtung<=1 Then If zrichtung>=2 Then Exit EndIf If oldzrichtung>=2 Then If zrichtung<=1 Then Exit EndIf Forever mfG, Christoph. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
MikeDee |
![]() Antworten mit Zitat ![]() |
---|---|---|
wie finde ich bei der Blitzhilfe raus wie man die "maus" an den Spieler bindet, also die Maus soll nur eine bestimmte Entfernung vom Spieler weg, damit man den Spieler bewegen muss
kompletter Code Code: [AUSKLAPPEN] Graphics 1024,768,16,1 SetBuffer BackBuffer() SeedRnd MilliSecs() zx = Rand(0,1004) zy = Rand(0,748) ;Hauptschleife Repeat Cls HidePointer ;Norden? If KeyDown(17) Then hy = hy - 2 EndIf ;Osten? If KeyDown(32) Then hx = hx + 2 EndIf ;Süden? If KeyDown(31) Then hy = hy + 2 EndIf ;Westen? If KeyDown(30) Then hx = hx - 2 EndIf ;Auf der anderen Seite auftauchen. If hx < 0 Then hx = 1023 If hx > 1023 Then hx = 0 If hy < 0 Then hy = 767 If hy > 767 Then hy = 0 ;Spieler zeichnen Color 255,255,255 Rect hx,hy,10,10,1 ;Maus zeichnen mx = MouseX() my = MouseY() Color 255,0,0 Oval mx,my,5,5,1 ;Mausentfernung zum Spieler If mx>hx+20 Then mx=hx+20 If mx>hx-20 Then mx=hx-20 If my>hy+20 Then mx=hx+20 If my>hy-20 Then mx=hx-20 ;Ziel zeichnen Color 0,0,225 Rect zx,zy,20,20,1 ;Zielkolission If mx>zx And mx<zx+20 And my>zy And my<zy+20 And MouseHit(1) Then zx = Rand(0,1004) : zy = Rand(0,748) Punkte = Punkte + 1 Else ;Zielbewegung If MilliSecs()-zieltimer>500 Then zrichtung=Rand(0,3) zieltimer=Millisecs() Endif Select zrichtung Case 0 zx=zx+1 Case 1 zx=zx-1 Case 2 zy=zy+1 Case 3 zy=zy-1 End Select EndIf If zx < 0 Then zx = zx+1 If zx > 1004 Then zx = zx-1 If zy < 0 Then zy = zy+1 If zy > 748 Then zy = zy-1 ;Punkte schreiben Color 255,255,255 Text 512,0,"Punkte"+Punkte Flip Until KeyHit(1) End ansatz Code: [AUSKLAPPEN] ;Mausentfernung zum Spieler If mx>hx+20 Then mx=hx+20 If mx>hx-20 Then mx=hx-20 If my>hy+20 Then mx=hx+20 If my>hy-20 Then mx=hx-20 Irgendwie fehlt da das Endif, aber wenn ich das reinstelle meckert BB der spieler wird mit den WASD-Tasten bewegt |
||
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Graphics 800,600,0,2 Setbuffer Backbuffer() Repeat Rect MouseX(), MouseY(), 32,32,1 Flip Cls Until Keyhit(1) Nun zeichnet man das Rect einfach immer bei der Maus. |
||
![]() |
MikeDee |
![]() Antworten mit Zitat ![]() |
---|---|---|
so meinte ich das nicht, ich meinte das sich die maus immer nur eine bestimmte enfernung zum spieler entfernen kann. Also das wenn man mit der Maus weiter gehen will man mit der Spielfigur hinterher muss. | ||
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich würde mit dem satz des Pythagoras die Entfernung der Maus zum Spieler ausrechnen und dann bei einer bestimmten Länge der Strecke MoveMouse![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group