Skocz do zawartości

Silnik gry i wielki problem.


Sirluki

Rekomendowane odpowiedzi

Witam ponownie.

 

Znów mam problem, tym razem na tyle powazny, ze przez ostatnie 2h "rozwiazywania" go, juz mnie boli glowa.

Wiec zaczene od obrazka, ktory mi pomoze wyjanic to wszystko:

problemhe8.png

 

To tak: Mam postac obj_postac_1 i przy nacisnieciu klawisza ctrl Gm rysuje objekt obj_pocisk który wylatuje z głowy (orgin obj_postac_1 jest ustawiony na center, wiec to dlatego). Karabin na rysunku to sprite, nie obiekt. I tutaj jest problem: nie moge zrobic tego, ze obj_pocisk wylatuje z miejsca na obrazku zaznaczonego zielonym kolkiem. Ale to nie koniec, bo moge zawsze zmienic orgin pocisku i po problemie, ale jesli zaczene ruch postacia (np. obroze ja o 180 stopni) i nacisne ctrl (klawisz strzalu) to pocisk rysuje wogole za plecami postaci i przez nia przelatuje, a co za tym idzie - odbiera jej hp.

To sie wydaje troche zagmantwane, ale w rzeczywistosci to latwe do pojecia :/

Umiaszczam tez silnik, abyscie mogli zobaczyc i powiedziec (ew. poprawic) jak to naprawic.

 

Prosze, to dla mnie bardzo wazne, bo juz naprawde nie mam sily a niechcialbym rezygnowac z tego projektu :)

 

PS. wiem ze wiele ryzykuje dajac tutaj ten silnik wraz z grafika, ale to dla mnie naprawde bardzo wazne.

Ogólnie chodzi o to, zeby posick wylatywal zawsze z zielonego punktu pomimo tego, pod jakim katem obroce postac.

Odnośnik do komentarza
Udostępnij na innych stronach

x+lenghtdir_x(dystans,kierunek); // W "kierunek" wpisz "direction"
y+lenghtdir_y(dystans,kierunek); // W "kierunek" wpisz "direction"

;p

 

Ale gdzie to wstawic i co ma znajdowac sie w polu "len" (dystans)? Chodzi mi o to czy mam tam wpisac liczbe jak np. 25 (pikseli) czy cos innego? :huh:

 

Prosze, bo to naprawde bardzo wazne dla mnie :)

 

Mam to umiescic w create pocisku czy w kodzie ktory tworzy pocisk?

Odnośnik do komentarza
Udostępnij na innych stronach

Do STEP bohatera wstaw mniej więcej coś takiego:

if keyboard_check_pressed(vk_ctrl)
    {
        var nowyobj;
        nowyobj = instance_create(x + lengthdir_x(14,image_angle - 4),y + lengthdir_y(14,image_angle - 4),obj_pocisk);
        nowyobj.direction = image_angle
        nowyobj.speed = 6
    }

Ale gdzie to wstawic i co ma znajdowac sie w polu "len" (dystans)?

W "dystans" wpisz dystans w pixelach :P

Odnośnik do komentarza
Udostępnij na innych stronach

zamiast:

 

switch(aktywna)
{
    case 0:
    if (b[0,1]>0) // jeśli stan amunicji jest więksy od zera
    {
        a=instance_create(x,y,obj_pocisk)// twozy pocisk
        a.direction= obj_postac_1.direction //nadaje mu kąt
        a.speed=b[0,2] //nadaje mu speed
        a.damage=b[0,3] //definiuje zmienna demage
        b[0,1]-=1 // odejmuje od stanu amunicji jeden pocisk
    }   break

//itd...

 

wstaw

 

switch(aktywna)
{
    case 0:
    if (b[0,1]>0) // jeśli stan amunicji jest więksy od zera
    {
        a=instance_create(x+lengthdir_x(60,direction-10),y+lengthdir_y(60,direction-10),obj_pocisk)// twozy pocisk
        a.direction= obj_postac_1.direction //nadaje mu kąt
        a.speed=b[0,2] //nadaje mu speed
        a.damage=b[0,3] //definiuje zmienna demage
        b[0,1]-=1 // odejmuje od stanu amunicji jeden pocisk
    }   break

//itd

 

 

i po kłopocie ;)

Tylko pamiętaj że do każdej broni musisz trochę dostosować te parametry.

w lenghtdir w pierwszym argumencie masz odległość od środka gracza, a w drugim

przesunięcie w bok o ileś stopni.

 

Pozdrawiam ;)

Odnośnik do komentarza
Udostępnij na innych stronach

zamiast:

 

switch(aktywna)
{
    case 0:
    if (b[0,1]>0) // jeśli stan amunicji jest więksy od zera
    {
        a=instance_create(x,y,obj_pocisk)// twozy pocisk
        a.direction= obj_postac_1.direction //nadaje mu kąt
        a.speed=b[0,2] //nadaje mu speed
        a.damage=b[0,3] //definiuje zmienna demage
        b[0,1]-=1 // odejmuje od stanu amunicji jeden pocisk
    }   break

//itd...

 

wstaw

 

switch(aktywna)
{
    case 0:
    if (b[0,1]>0) // jeśli stan amunicji jest więksy od zera
    {
        a=instance_create(x+lengthdir_x(60,direction-10),y+lengthdir_y(60,direction-10),obj_pocisk)// twozy pocisk
        a.direction= obj_postac_1.direction //nadaje mu kąt
        a.speed=b[0,2] //nadaje mu speed
        a.damage=b[0,3] //definiuje zmienna demage
        b[0,1]-=1 // odejmuje od stanu amunicji jeden pocisk
    }   break

//itd

i po kłopocie ;)

Tylko pamiętaj że do każdej broni musisz trochę dostosować te parametry.

w lenghtdir w pierwszym argumencie masz odległość od środka gracza, a w drugim

przesunięcie w bok o ileś stopni.

 

Pozdrawiam ;)

 

 

Jejku, działa :) Jest super. Bardzo dziekuje wszystkim i o wszystkich z was wspomne w credits :)

 

Tematu nie zamykam, nigdy nie wiadomo co sie stanie :)

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...