Forum | | | | | Hi, bin zwischendurch mal wieder an meinem Game am basteln. Aus Gründen, die mir so besser gefallen, ändere ich die Spriterichtung wo gerade die Maus hinzeigt. Jedoch will ich es nicht hinbekommen, eine richtige Abfrage zu starten:
if equ(MouseButton(),1)
if lt(%mousey,y&)
SetSpriteAnim (sprite&,0,68,96,67,9,1,7)
MoveSprite(sprite&,%mousex,%mousey)
richtung%=2
endif
if gt(%mousey,y%)
SetSpriteAnim (sprite&,0,0,96,67,9,1,7)
MoveSprite(sprite&,%mousex,%mousey)
richtung%=1
endif
if lt(%mousex,x&)
SetSpriteAnim (sprite&,0,270,96,67,9,1,7)
MoveSprite(sprite&,%mousex,%mousey)
richtung%=3
endif
if gt(%mousex,x&)
SetSpriteAnim (sprite&,0,205,96,67,9,1,7)
MoveSprite(sprite&,%mousex,%mousey)
richtung%=4
endif
while equ(MouseButton(),1)
x&=GetSpriteX(sprite&)
y&=GetSpriteY(sprite&)
if equ(schritt%,10)
case equ(sound%,1):Playsound goes$,17
schritt%=0
endif
inc schritt%
wend
if equ(richtung%,1)
MoveSprite(sprite&,x&,y&)
SetSpriteAnim (sprite&,0,135,96,67,1,1,1)
SetSpriteAnimMode (sprite&,1)
elseif equ(richtung%,2)
MoveSprite(sprite&,x&,y&)
SetSpriteAnim (sprite&,97,135,96,67,1,1,1)
SetSpriteAnimMode (sprite&,1)
elseif equ(richtung%,3)
MoveSprite(sprite&,x&,y&)
SetSpriteAnim (sprite&,300,135,96,67,1,1,1)
SetSpriteAnimMode (sprite&,1)
elseif equ(richtung%,4)
MoveSprite(sprite&,x&,y&)
SetSpriteAnim (sprite&,200,135,96,67,1,1,1)
SetSpriteAnimMode (sprite&,1)
endif
else
......
Logischerweise sind die Koordinaten doppelt abfragbar. Hat einer ne Idee, wie ich es hinbekomme, das wirklich nur in die Richtung die Animation zeigt, in welcher auch der Mauszeiger ist? Rolf |
| | | | |
| | | | | | | |
| | | Hi Rolf,
wenn sich das Sprite zum Mauszeiger hinbewegt, kannst du dieses hier verwenden:
GetSpriteMoveXY (H)
Testet, in welche Richtung sich das Sprite mit dem Handle H momentan bewegt.
H : Long - Handle eines mit InitSprite() erzeugten Sprites
Ergebniss: Long - Bewegungsrichtung des Sprites.
0 = Sprite steht still 1 = Bewegung nach rechts oben 2 = Bewegung nach rechts 3 = Bewegung nach rechts unten 4 = Bewegung nach unten 5 = Bewegung nach links unten 6 = Bewegung nach links 7 = Bewegung nach links oben 8 = Bewegung nach oben
GetSpriteMoveXY(sprite&)
P.S. Bin gerade dabei, ProSpeeds Anleitung zu verbessern, mehr interne Links und kurze Beispielcodes zu den Funktionen...
Gruß, Frank |
| | | | |
| | | Hi und Danke Frank. Jedoch bekomme ich es nicht hin ;(((
WHILENOT EQU(%Scankey,27)
getmessage
if equ(MouseButton(),1)
SetSpriteAnim (sprite&,0,68,96,67,9,1,7)
MoveSprite(sprite&,%mousex,%mousey)
while equ(MouseButton(),1)
x&=GetSpriteMoveXY (sprite&)
locate 1,1
print x&
if equ(schritt%,10)
case equ(sound%,1):Playsound goes$,17
schritt%=0
endif
inc schritt%
if equ(x&,3) NACH UNTEN
SetSpriteAnim (sprite&,0,135,96,67,1,1,1)
MoveSprite(sprite&,%mousex,%mousey)
SetSpriteAnimMode (sprite&,0)
richtung%=1
elseif equ(x&,4)
SetSpriteAnim (sprite&,0,135,96,67,1,1,1)
MoveSprite(sprite&,%mousex,%mousey)
SetSpriteAnimMode (sprite&,0)
richtung%=1
elseif equ(x&,5)
SetSpriteAnim (sprite&,0,135,96,67,1,1,1)
MoveSprite(sprite&,%mousex,%mousey)
SetSpriteAnimMode (sprite&,0)
richtung%=1
elseif equ(x&,4) UNTEN
SetSpriteAnimMode (sprite&,0)
SetSpriteAnim (sprite&,97,135,96,67,1,1,1)
richtung%=2
endif
wend
if equ(richtung%,1) OBEN
SetSpriteAnimMode (sprite&,1)
SetSpriteAnim (sprite&,0,135,96,67,1,1,1)
elseif equ(richtung%,2) UNTEN
SetSpriteAnimMode (sprite&,1)
SetSpriteAnim (sprite&,97,135,96,67,1,1,1)
endif
else
Ab hier nun Reaktionen im Spiel:
Elseif and(mouse(121,355-140,405),equ(%mousekey,1)) KLICK AUF Zauberer
TEXT "DEIN FRIEDEN","ER WIRD ERST DANN FREI","WENN DU SKULOR FINDEST"
endif
wend
Irgendwas mache ich falsch, ist mir klar, nur was? Der Code bedeutet ja:
Solange linke Maustaste: Schaue welche Richtung das Sprite und dann setze neue Spritefigur. Jedoch nun bewegt sich das Sprite (jeweils aus 9 Bildern in der Reihe) nicht mehr. Es rutscht (sowie in der Sendung South Park ;))) ) ohne sich zu bewegen zum Endpunkt. Klar - ich habe hier nur testweise einige Richtungen abgefragt. Wie würdest Du das (oder wer sonst) machen???? Kennt man ja aus Diablo u.s.w die Maus verwandelt sich dann auch in einen Mauszeiger, welcher in die Richtung zeigt. Puhhh, naja dann mach ich solange mit ROC weiter ))))) Danke im Vorraus Rolf |
| | | | |
| | | Hallo Rolf,
mir ist noch nicht 100%ig klar, was genau du machen möchtest... Wie sieht dein Sprite denn aus, eine Art Pfeil ? Und der soll in die Richtung zeigen, wo sich der Mauszeiger befindet ? Oder soll sich das Sprite auch dorthin bewegen.
Bin irgendwie etwas begriffsstutzig heute :-/
Gruß, Frank |
| | | | |
| | | Hi Frank, nee liegt wohl an meiner Erklärung.
Mein Sprite ist ein Mensch. Dieser Mensch besteht aus allen 8 Richtungen. In jeder Richtung sind jeweils 9 Einzelbilder. (Das mit dem Pfeil war nur so am Rande)
Nun will ich: Solange Maustaste links gedrückt ist dann jeweils erkennen in welche Richtung es geht und dementsprechend in der Whileschleife (also Maus=1) den Menschen natürlich auch der Laufrichtung anpassen. Jedoch innerhalb der Schleife (siehe Code) läuft der Kerl dann nicht mehr, sondern bleibt immer auf dem ersten Bild stehen - er rutsch also ohne Animation zum Zielpunkt.
Rolf |
| | | | |
| | | Hi,
ach so.
Schreib doch mal anstatt:
if equ(MouseButton(),1) ...
dieses hier:
t&=MouseButton() If TestBit(t&,0) Linke Maustaste gedrückt ? ...
Gruß, Frank |
| | | | |
| | | Hi ich nochmal. Habs soweit hinbekommen. Die Abfragen haben nicht ausgereicht. Es mussten noch mehr her. Zum Beispiel aktuelle Spriteposition in einer Variable sichern um später in der Schleife nur bei Änderung zu aktualisieren u.s.w. Trotzdem Danke. Rolf |
| | | | |
| | | Hallo Rolf.
Prima. Wenn du bald einen Tester suchst, mach ich gerne...
Gruß, Frank |
| | | | |
| | | Ja gerne Frank, sieht wesentlich besser als mein altes Demogame aus. Jedoch, naja - Roc hat Vorrang und mit dem Game ist ne schleppende Sache. Wenn Du noch ein Jahr Geduld hast hihihihihi! Rolf |
| | | | |
| | | Hi,
echt? Ein Jahr ? Na ja, ich kann warten... )
Gruß, Frank |
| | | | |
|
AntwortenThemenoptionen | 3.788 Betrachtungen |
ThemeninformationenDieses Thema hat 1 Teilnehmer: |