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

Sem vkládejte editovatelné kusy kódu a tutoriály.
Post Reply
tschmied
Posts: 72
Joined: January 13, 2012, 8:22 pm
Facebook: www.nope.com
Contact:

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

Post by tschmied »

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é).
Image
Do Step eventu vložíme následující kus kódu:

Code: Select all

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:

Code: Select all

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:

Code: Select all

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

Code: Select all

vspeed=5 //DOLU

Code: Select all

hspeed=5 //DOPRAVA

Code: Select all

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

-Quake
Last edited by tschmied on August 6, 2014, 4:56 am, edited 5 times in total.
UNTIL ALONE
D-Sheep
Posts: 768
Joined: September 7, 2011, 10:17 pm
Facebook: http://facebook.com/sheepdave
Location: Praha, CZE
Contact:

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

Post by D-Sheep »

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.
tschmied
Posts: 72
Joined: January 13, 2012, 8:22 pm
Facebook: www.nope.com
Contact:

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

Post by tschmied »

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
D-Sheep
Posts: 768
Joined: September 7, 2011, 10:17 pm
Facebook: http://facebook.com/sheepdave
Location: Praha, CZE
Contact:

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

Post by D-Sheep »

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é?
tschmied
Posts: 72
Joined: January 13, 2012, 8:22 pm
Facebook: www.nope.com
Contact:

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

Post by tschmied »

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
D-Sheep
Posts: 768
Joined: September 7, 2011, 10:17 pm
Facebook: http://facebook.com/sheepdave
Location: Praha, CZE
Contact:

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

Post by D-Sheep »

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?
tschmied
Posts: 72
Joined: January 13, 2012, 8:22 pm
Facebook: www.nope.com
Contact:

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

Post by tschmied »

Ano, ale já změnil celou mechaniku toho pohybu. Teď je to jak v top-down střílečkách
UNTIL ALONE
User avatar
xan1995
Posts: 27
Joined: November 19, 2011, 11:28 am

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

Post by xan1995 »

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

Code: Select all

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.
tschmied
Posts: 72
Joined: January 13, 2012, 8:22 pm
Facebook: www.nope.com
Contact:

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

Post by tschmied »

*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
User avatar
niko.las
Posts: 28
Joined: June 3, 2012, 9:51 am
Facebook: http://facebook.com/

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

Post by niko.las »

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)

Code: Select all

//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;
        }
    }
}
tschmied
Posts: 72
Joined: January 13, 2012, 8:22 pm
Facebook: www.nope.com
Contact:

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

Post by tschmied »

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