Otáčení objektu za kurzorem myši + pohyb

Sem vkládejte editovatelné kusy kódu a tutoriály.
Odpovědět
Uživatelský avatar
tschmied
Příspěvky: 72
Registrován: leden 13, 2012, 8:22 pm
Facebook: www.nope.com
Kontaktovat uživatele:

Otáčení objektu za kurzorem myši + pohyb

Příspěvek od tschmied » srpen 3, 2014, 9:08 am

Ahoj, v tomto návodu se naučíme jak přimět objekt, aby se otáčel podle kurzoru myši. Je to velmi jednoduché.

Otáčení
Ze všeho nejprve si vytvoříme objekt (Název je na vás) se spritem, který směřuje směrem doprava a je vycentrovaný (Animace bude fungovat také).
Obrázek
Do Step eventu vložíme následující kus kódu:

Kód: Vybrat vše

direction = point_direction(x, y, mouse_x, mouse_y); // natočí objekt směrem k myši
image_angle = direction; // natočí sprite podle směru objektu
.

Pohyb
Pohyb je velice jednoduchý. V eventu Create spustíme následující kód:

Kód: Vybrat vše

friction=0.3  //Můžete si upravit
Poté vytvořte event, který by podle vás měl spustit chůzi vzhůru (Asi nejlepší volbou je šipka nahoru, či klávesa W), a do něj vložíme jednoduchý kód:

Kód: Vybrat vše

vspeed=-5
Podobné provedeme u eventů, které spustí chůze dolů, doleva a doprava.

Kód: Vybrat vše

vspeed=5 //DOLU

Kód: Vybrat vše

hspeed=5 //DOPRAVA

Kód: Vybrat vše

hspeed=-5 //DOLEVA
Spustíme hru a zkoušíme. Za drobné chybky se omlouvám a doufám, že jsem někomu pomohl :-)

-Quake
Naposledy upravil(a) tschmied dne srpen 6, 2014, 4:56 am, celkem upraveno 5 x.
UNTIL ALONE

Uživatelský avatar
D-Sheep
Příspěvky: 768
Registrován: září 7, 2011, 10:17 pm
Facebook: http://facebook.com/sheepdave
Bydliště: Praha, CZE
Kontaktovat uživatele:

Re: Otáčení objektu za kurzorem myši + pohyb

Příspěvek od D-Sheep » srpen 3, 2014, 9:24 am

Mě se moc nelíbí, že to děláš přes speed, protože ta se jednou nastaví a objekt se pak pohybuje pořád. Při puštění klávesy se nezastaví. Proč nemáš ve svém návodu nějaké řešení toho, co dělat, když je objekt moc blízko kurzoru? Ono to pak hrozně rychle skáče tam a sem. Strafování podle mě nebude fungovat moc dobře, protože ta funkce změní hodnotu direction a sprite se nebude zobrazovat ve správným směru.

Uživatelský avatar
tschmied
Příspěvky: 72
Registrován: leden 13, 2012, 8:22 pm
Facebook: www.nope.com
Kontaktovat uživatele:

Re: Otáčení objektu za kurzorem myši + pohyb

Příspěvek od tschmied » srpen 3, 2014, 9:35 am

Opravím to, děkuji za názor :-)
(A to direction by to změnit nemělo - pouze s tím pracuje O_o
UNTIL ALONE

Uživatelský avatar
D-Sheep
Příspěvky: 768
Registrován: září 7, 2011, 10:17 pm
Facebook: http://facebook.com/sheepdave
Bydliště: Praha, CZE
Kontaktovat uživatele:

Re: Otáčení objektu za kurzorem myši + pohyb

Příspěvek od D-Sheep » srpen 3, 2014, 9:49 am

No, upřímně, taky si tím teď nejsem jistej a nemůžu si to ověřit, ale domnívám se, že na konci Stepu vezme GM hodnoty speed a direction, spočítá rozdíl x a y a objekt posune. Potom jak jinak by motion_set měla ovlivnit směr pohybu než změnou té proměnné?

Uživatelský avatar
tschmied
Příspěvky: 72
Registrován: leden 13, 2012, 8:22 pm
Facebook: www.nope.com
Kontaktovat uživatele:

Re: Otáčení objektu za kurzorem myši + pohyb

Příspěvek od tschmied » srpen 3, 2014, 10:01 am

Tak jsem ten pohyb udělal úplně jinak - z nějakého důvodu při strafování se objekt choval jako kdybych zmáčkl šipku nahoru -...-
UNTIL ALONE

Uživatelský avatar
D-Sheep
Příspěvky: 768
Registrován: září 7, 2011, 10:17 pm
Facebook: http://facebook.com/sheepdave
Bydliště: Praha, CZE
Kontaktovat uživatele:

Re: Otáčení objektu za kurzorem myši + pohyb

Příspěvek od D-Sheep » srpen 3, 2014, 11:01 am

OMG! Zkoušíš si vůbec to, co sem píšeš? Vždyť vspeed a hspeed se s pohybem za myší nedají vůbec spojit! Víš, jaký je význam těch dvou?

Uživatelský avatar
tschmied
Příspěvky: 72
Registrován: leden 13, 2012, 8:22 pm
Facebook: www.nope.com
Kontaktovat uživatele:

Re: Otáčení objektu za kurzorem myši + pohyb

Příspěvek od tschmied » srpen 3, 2014, 12:21 pm

Ano, ale já změnil celou mechaniku toho pohybu. Teď je to jak v top-down střílečkách
UNTIL ALONE

Uživatelský avatar
xan1995
Příspěvky: 27
Registrován: listopad 19, 2011, 11:28 am

Re: Otáčení objektu za kurzorem myši + pohyb

Příspěvek od xan1995 » srpen 4, 2014, 12:14 pm

Tutoriál je určený pro začátečníky, proto bych je nezatěžoval s drawem. Zjednodušil bych to na:

Kód: Vybrat vše

direction = point_direction(x, y, mouse_x, mouse_y); // natočí objekt směrem k myši
image_angle = direction; // natočí sprite podle směru objektu
Píšeš, že sprite je vycentrovaný. Ve screenu ho však vycentrovaný nemáš. K pohybu se raději vyjadřovat nebudu.

Uživatelský avatar
tschmied
Příspěvky: 72
Registrován: leden 13, 2012, 8:22 pm
Facebook: www.nope.com
Kontaktovat uživatele:

Re: Otáčení objektu za kurzorem myši + pohyb

Příspěvek od tschmied » srpen 6, 2014, 4:55 am

*vzdech*
Ten screen byl vytažen z původního video tutoriálu (který postrádal pohyb) ve špatnou chvíli. Dobrá. Uznávám - ale ten screen je tam stejně jen pro ilustraci - jinak by tam nebyl jen jeden.





A k tomu pohybu...
Co je špatné na TopDown RPG-based pohybu???
UNTIL ALONE

Uživatelský avatar
niko.las
Příspěvky: 28
Registrován: červen 3, 2012, 9:51 am
Facebook: http://facebook.com/

Re: Otáčení objektu za kurzorem myši + pohyb

Příspěvek od niko.las » srpen 6, 2014, 9:55 am

Top-Down pohyb přes vpseed a hspeed? :roll:
Co takhle radši zkusit něco takového? (navíc s kolizním kódem)

Kód: Vybrat vše

//příklad pro pohyb doleva
if(keyboard_check(ord("A"))) {
    repeat(spd) { //spd si nastavíš v create třeba na 4
         if(place_free(x-1,y)) {
            x -= 1;
        }
    }
}

Uživatelský avatar
tschmied
Příspěvky: 72
Registrován: leden 13, 2012, 8:22 pm
Facebook: www.nope.com
Kontaktovat uživatele:

Re: Otáčení objektu za kurzorem myši + pohyb

Příspěvek od tschmied » srpen 6, 2014, 1:33 pm

Ale to by to nebylo plynulý - to by nešlo
frition=0.2;
UNTIL ALONE

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 0 hostů