Hexagonálna kolízia [aktualizované]

Sem vkládejte editovatelné kusy kódu a tutoriály.
Odpovědět
Uživatelský avatar
ipq
Příspěvky: 924
Registrován: srpen 15, 2011, 7:31 pm
Bydliště: Petržalka

Hexagonálna kolízia [aktualizované]

Příspěvek od ipq » duben 7, 2012, 10:53 pm

Zdar. Po nejakej dobe som sa začal nudiť, tak som skúsil experimentovať. Tak sa mi podarilo spraviť toto a t.j. Hexagonálnu kolíziu. Ak poznáte štandardné kolízie podľa tvarov, tak som skúsil niečo podobné spraviť ale v hexagonálnom tvare. K dispozícii sú dve varianty. Vertikálny(stojato) typ a horizontálny(ležato). V prípade, keby ste nechápali, k dispozícii jeden jeden GM81 súbor(funguje i v Lite) a GML súbor, kde je aj návod, ako to robiť. Ak by vám GM81 súbor nešiel otvoriť(pochybujem, stačí mať Lite verziu), môžete skúsiť scripty s GMLka.

Jednoduchá ukážka kódu:

collision_hexagonal_ver(x,y,point_x,point_y,wsize, hsize,vecsize)

Kód: Vybrat vše

var sirka;
sirka=argument4- (((argument1-argument3)+argument5)/-argument6*argument4)* ((argument3-argument5)>argument1) -(((argument1-argument3)-argument5)/argument6*argument4)* ((argument3+argument5)<argument1);
if (argument0>argument2-sirka && argument0<argument2+sirka && argument1>argument3-argument5-argument6 && argument1<argument3+argument5+argument6) return 1 else return 0;
collision_hexagonal_hor(x,y,point_x,point_y, wsize,hsize,vecsize)

Kód: Vybrat vše

var vyska;
vyska=argument5 -(((argument0-argument2)+argument4)/-argument6*argument5)* ((argument2-argument4)>argument0) -(((argument0-argument2)-argument4)/argument6*argument5)* ((argument2+argument4)<argument0);
if (argument0>argument2-argument4-argument6 && argument0<argument2+argument4+argument6 && argument1>argument3-vyska && argument1<argument3+vyska) return 1 else return 0;
Na Stiahnutie: http://www.ourupload.wz.cz/file/2168/he ... lision.zip

EDIT: Aktualizovaná verzia, obsahuje upravený script, ktorý zjednodušil Slayer 64 pre rýchlejší výpočet, veľmi pekne mu ďakujem. :)
Ukážka jedného scriptu od neho:

Kód: Vybrat vše

var a;

if argument1<argument3-argument5-argument6 return 0
if argument1>argument3+argument5+argument6 return 0

if argument1<argument3-argument5
{
    a=argument4+(((argument1-argument3)+argument5)/argument6*argument4)
}
else
{
    if argument1>argument3+argument5
    {
        a=argument4-(((argument1-argument3)-argument5)/argument6*argument4)
    }
    else
    {
        a=argument4
    }
}

if argument0<argument2-a return 0
if argument0>argument2+a return 0

return 1

Odpovědět

Kdo je online

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