Deutsch
Forum

Maus und Sprite

 
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
 
20.04.2004  
 



Achso:
x&=GetSpriteX(sprite&)
y&=GetSpriteY(sprite&)

;) Rolf
 
20.04.2004  
 



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
 
20.04.2004  
 



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
 
20.04.2004  
 



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
 
20.04.2004  
 



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
 
20.04.2004  
 



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
 
20.04.2004  
 



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
 
20.04.2004  
 



Hallo Rolf.

Prima. Wenn du bald einen Tester suchst, mach ich gerne...

Gruß, Frank
 
20.04.2004  
 



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
 
20.04.2004  
 



Hi,

echt? Ein Jahr ?
Na ja, ich kann warten... )

Gruß, Frank
 
20.04.2004  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

3.771 Betrachtungen

Unbenanntvor 0 min.
Sven Bader16.11.2021
Walter07.04.2019
maroro25.05.2018
gerd30.07.2013
Mehr...

Themeninformationen

Dieses Thema hat 1 Teilnehmer:

unbekannt (11x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie