Síla úderu mečem

Pokud si nevíte s něčím rady ohledně tvorby v Game Makeru - pište sem!
Odpovědět
Uživatelský avatar
danknapik
Příspěvky: 4
Registrován: červenec 13, 2018, 6:26 pm
Facebook: http://facebook.com/

Síla úderu mečem

Příspěvek od danknapik » červenec 13, 2018, 6:45 pm

Zdravím kluci,
je to tady sice už trošku mrtvé, ale stejně doufám, že se někdo chytí a poradí. Mám 2D postavu, která má bojovat tím stylem, že se kolem ní točí meč v závislosti na pohybu myši. Pohyb meče je tedy ve stepu vyjádřen tímhle kodem.

Kód: Vybrat vše

image_angle = point_direction(mouse_x,mouse_y,x,y);
Tohle je tedy vyřešeno, ale chtěl bych enemákovi ubrat životy podle toho, jak rychle jsem s tím mečem sekl. Pro pochopení sem dávám i obrázek. Děkuji za případnou pomoc Chytráci.
Obrázek

BboyScary
Příspěvky: 238
Registrován: listopad 2, 2011, 6:33 pm
Facebook: https://www.facebook.com/BB-Scary-produkce-1161668
Bydliště: Kopřivnice

Re: Síla úderu mečem

Příspěvek od BboyScary » červenec 14, 2018, 2:05 pm

a nestačilo by jen dát toto?

Kód: Vybrat vše

dmgX = hspeed;
dmgY = vspeed;
dmg = (dmgX + dmgY)  /2+
sice hodně jednoduše ale třeba to bude fungovat. Nemám to teď jak odzkoušet.

Uživatelský avatar
danknapik
Příspěvky: 4
Registrován: červenec 13, 2018, 6:26 pm
Facebook: http://facebook.com/

Re: Síla úderu mečem

Příspěvek od danknapik » červenec 14, 2018, 4:46 pm

Zkoušel jsem, jenže on jakoby se meč nehne, mění se jen image_angle, tímpádem hspeed s vspeed meče zůstává na nule. No fakt už mě nic nenapadá. Děkuji za radu, zkusím ještě něco vymyslet.

Uživatelský avatar
Ondras
Příspěvky: 17
Registrován: srpen 7, 2011, 12:33 am

Re: Síla úderu mečem

Příspěvek od Ondras » červenec 15, 2018, 1:45 am

To bys musel nějakým způsobem měřit jak daleko ujede myš za nějaký čas. (když se objekt sám fakticky nehýbe, musíš pracovat s myší samotnou)

Např. si při té prvotní kolizi meče s nepřítelem si ulož do proměnných pozici myši (puvodni_pozice_x = mouse_x, puvodni_pozice_y = mouse_y) a nastav alarm na pár stepů. (chce to odladit tak aby to bylo dost na změření té vzdálenosti, ale aby to nepůsobilo jako zásek - vznikne tam prodleva mezi seknutím a odečtením životů nepříteli)
Až alarm vyprší, tak můžeš porovnat třeba funkcí point_distance(puvodni_pozice_x, puvodni_pozice_y, mouse_x, mouse_y);
Pak získáš údaj o vzdálenosti, kterou kurzor urazil při tom seknutí, čož by mohlo fungovat.

Jen si musíš ohlídat aby se ti tenhle skript pustil jen jednou v momentě kdy nastane ta první kolize a neopakoval se celou dobu co ten meč bude kolidovat, jinak to zafunguje až vyjedeš mečem z nepřítele a bude ti to dělat bordel.

Má to určitě pár háčků, ale třeba tě to navede. Ozkoušené to nemám.
Hodně štěstí.

bildo
Příspěvky: 147
Registrován: srpen 6, 2011, 7:30 am

Re: Síla úderu mečem

Příspěvek od bildo » červenec 15, 2018, 7:52 am

A nestacilo by treba do end stepu dat :

uhel_mece_old = point_direction(mouse_x,mouse_y,x,y);
A pak do udalosti kolize s enemy dat :
damage = abs(uhel_mece_old - point_direction(mouse_x,mouse_y,x,y);

A trosku to opodminkovat pri prechodu 0 / 360 stupnu ?
Pisu z postele, nemam si to jak ted zkusit....
Obrázek

Uživatelský avatar
danknapik
Příspěvky: 4
Registrován: červenec 13, 2018, 6:26 pm
Facebook: http://facebook.com/

Re: Síla úderu mečem

Příspěvek od danknapik » červenec 15, 2018, 5:09 pm

No ten meč tam není pořád, se držením myší se vytvoří a otáčí, jenže pokud si v jeho Create uložím do proměnné jeho počáteční úhel a při kolizi s nějakým enemákem si uložím se ten konečný úhel, při kterém to zkolidovalo, tak jejich rozdíl mi nedá "sílu seku". Právě jak píše Ondra, zjistit, za jak dlouhou dobu to urazí nějakou vzdálenost (no neurazí to nic, spíš jako za jak dlouho to udělá otočku). Dostal jsem nápad, bude to asi prasárna, ale pak sem hodím výsledek. Díky kluci za rady, inspirovali jste mě.

bildo
Příspěvky: 147
Registrován: srpen 6, 2011, 7:30 am

Re: Síla úderu mečem

Příspěvek od bildo » červenec 16, 2018, 11:42 am

Ahoj. Tak mě teď napadlo zajímavé řešení.

Potřebuješ ten počátečný a konečný uhel.
Na základě toho víš, kolik jsi od vytvoření meče, při držení levého tlačítka urazil stupňů ke kolizi.
Dále si do nějaké proměnné ( _time ) uložíš počet stepů, za jak dlouho jsi to urazil.

A pak už jen matematika

Pro představu:

Meč si vytvoříš na úhlu 0.

Když ho zasáhneš v úhlu 90 stupnů. Vydělíš to _time (10 stepů). To máme 9. Vynásobíš room_speed(30). DAMAGE 270.
Když ho zasáhneš v úhlu 90 stupňů za 30 stepů. Vyjde 3. Vynásobíš to room_speed, a vyjde Ti DAMAGE 90.

Takhle by to mohlo funfgovat. Tu výslednou damage můžeš něčím dělit, ať to je menší číslo. ...
Obrázek

Uživatelský avatar
danknapik
Příspěvky: 4
Registrován: červenec 13, 2018, 6:26 pm
Facebook: http://facebook.com/

Re: Síla úderu mečem

Příspěvek od danknapik » červenec 17, 2018, 10:56 am

Ano, tak nakonec to teda jakž takž funguje, jen je to třeba dost doladit. Přemýšleli jsme s Bildem dost podobně, do proměnné counting ve stepu celou dobu prasácky přičítám jedničku, dokud meč neudeří, odečte se od sebe začáteční úhel s konečným a vydělí tím časem. To nakonec vypočte samotný damage. Nějak to ještě poladím a bude to dobrý. Děkuji kluci za rady

Odpovědět

Kdo je online

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