Skocz do zawartości

Temat zbiorczy na drobnostki


Chell

Rekomendowane odpowiedzi

Moja odwieczna zagwozdka. Jak zrobić taki przycisk ON/OFF

Nie wiem jak to wytłumaczyć. Pewnie kod powie więcej niż Ja

 

GML
var on = false;

 

if(keyboard_check_pressed(vk_f2))

{

if(on==false)

{

on=true;

}

else

on=false;

}

Myślałem, że if (ten drugi) wykona się raz i weźmie pod uwagę albo pierwszy warunek albo elsa. Mogłem nie unikać lekcji informatyki (technikum)

 

Nevermind, ogarnąłem. Wystarczyło nie robić zmienną tymczasową, bo zawsze ustalała zmienną na false :|

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 tygodnie później...

Hey,mam mały problem z tą funkcją,mianowicie okienko gry powinno zmienić kolor na czerwony przeźroczysty,jednak tak się nie dzieje gdyż okno przybiera kolor czerwony ale alpha na 1 (całkowita czerwień).Nwm o co z tym chodzi. Aha i dodam że nigdzie indziej nie używałem tej funkcji.

GML
draw_clear_alpha(c_red,0.5)

Pozdrawiam ^_^

Odnośnik do komentarza
Udostępnij na innych stronach

Moja odwieczna zagwozdka. Jak zrobić taki przycisk ON/OFF

Nie wiem jak to wytłumaczyć. Pewnie kod powie więcej niż Ja

 

GML
var on = false;

 

if(keyboard_check_pressed(vk_f2))

{

if(on==false)

{

on=true;

}

else

on=false;

}

Myślałem, że if (ten drugi) wykona się raz i weźmie pod uwagę albo pierwszy warunek albo elsa. Mogłem nie unikać lekcji informatyki (technikum)

 

Nevermind, ogarnąłem. Wystarczyło nie robić zmienną tymczasową, bo zawsze ustalała zmienną na false :|

 

 

GML
przycisk = false; // poczatkowy stan

if ( keyboard_check_pressed(vk_f2) ) przycisk = !przycisk; // przelaczenie stanu</span>

 

 

@patryk, ta funkcja rysuje po prostu rectangle rozciągnięty na cały view

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 tygodnie później...

Jest w GM:S metoda kubełkowa na wypełnianie tilesów? (nie wiem, jaki jest polski odpowiednik). Namaziałem bloki 32x32, zaimportowałem jako background i zrobiłem z nich tiles'y. Mam dość sporą przestrzeń do wypełnienia, a wypełnianie kratka po kratce trochę trwa. Jest jakaś metoda na auto uzupełnienie przestrzeni? tak jak np. w Paint kubełkiem

tilesy___autouzupelnianie.png

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

Nie ma i nie wolno tak robić. To bardzo spowalnia grę. Im więcej obiektów tym gorzej.

Możesz za to kliknąć na taki obiekt w room i przeciągnąć jego krawędź aby zajmował więcej miejsca. Tylko że będziesz mieć później problem z rysowaniem tego a z tym też musisz kombinować.

Odnośnik do komentarza
Udostępnij na innych stronach

hmm z obiektami wiem, że nie wolno tak robić ale co to tiles'ów właśnie nie byłem pewien. Szukałem też kombinacji klawiszy, które by pozwalałyby mi wyświetlić te rogi dzięki którym mógłbym skalować ich wielkość aczkolwiek nie znalazłem ich. Jedyne okienko z taką możliwością wyświetla mi się gdy kliknę PPM na bloczek, a później wybiorę z listy "Tile Properties". Są tam opcje skalowania ale nie ma podglądu na żywo, co trochę utrudnia sytuacje.

tilesy___auto_properties.png

 

Czy namalowanie całego roomu w gimpie, a później wklejanie go jako background do GM:S jest rozsądną opcją? Czy lepiej zrobić bloki np. 128x128 i nimi wypełniać room. Zmniejszy to ich ilość w stosunku do rozmiaru 32x32

Odnośnik do komentarza
Udostępnij na innych stronach

Pytanie bardzo drobnostkowe,odpowiedź pewnie jest banalna.

Chciałbym zrobić randomowe przywitania NPC,używając tego kodu :

GMLdraw_text(x,y,choose("Witaj!","Dzień dobry","Ahoj!"));

Jednak ten kod robi że teksty się zmieniają,co zrobić by pokazał się jeden tekst bez zbędnych zmian?

 

przypisz to do zmiennej w create i nie zapomnij dać gdzieś randomize()

 

Nie zrozumiałem tego wtedy,postanowiłem spróbować jeszcze raz. :)

Nie rozumiem konkrenie "przypisz to do zmiennej w create" w jakim sensie mam to zrobić.

GML
//create

text1="witaj"

text2="siema"

text3="elo"

text4="dzien dobry"

 

GML
//draw

randomize();

if if (distance_to_object(obj_gracz) < 10)

{

draw_text(x,y,choose(text1,text2,text3,text4)

}

Pozdrawiam.

Odnośnik do komentarza
Udostępnij na innych stronach

Nie zrozumiałem tego wtedy,postanowiłem spróbować jeszcze raz. smile.gif

Nie rozumiem konkrenie "przypisz to do zmiennej w create" w jakim sensie mam to zrobić.

 

Jednak ten kod robi że teksty się zmieniają,co zrobić by pokazał się jeden tekst bez zbędnych zmian?]

 

Twoje teksty zmieniają się ponieważ, Twój if ciągle spełnia warunek. Musiałbyś zrobić tak, żeby text był wybierany tylko raz, dlatego pomocny jest tutaj kod w create. Nie potrafię tłumaczyć :mellow: Przeanalizuj mój kod - kod powinien działać ale najlepiej jakby bardziej ogarnięci ludzie poprawili mnie w stosunku co do optymalizacji.

 

CREATE:

GML
randomize(); //ustaw losowy seed - dla losowosci

text = noone; // ustaw zmienna text i przypisz pusta wartosc

 

DRAW:

GML
if(distance_to_object(obj_gracz) < 11) //Odleglosc od gracza

{

 

if(text == noone) then text = choose("Witaj","siemanko","elo", "czesc"); //jesli text jest pusty, to przypisz jakies przywitanie

draw_text(x,y,text); //rysuj text

}

else

text = noone; //wyzeruj text jesli bohater jest za zasiegiem (potrzebne do losowosci)

Odnośnik do komentarza
Udostępnij na innych stronach

randomize() używa się w create, ta funkcja mówi GMowi tylko to że generator liczb losowych ma losować nowy "seed" w trybie testowania gry i w debuggerze.

 

Nie rozumiem konkrenie "przypisz to do zmiennej w create" w jakim sensie mam to zrobić.

GML
// Create

randomize();

losowyText = choose("Witaj","siemanko","elo", "czesc")

GML
// Draw

if(distance_to_object(obj_gracz) < 11) //Odleglosc od gracza

{

draw_text(x,y,losowyText );

}

 

 

Oto mi chodziło ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Jak sobie radzicie z kolizjami z myszką? Chodzi mi o coś typu place_meeting(x,y,mouse) albo collision_rectangle(x,y,x+32,y+32,mouse,false,true). Zwykle robię pusty obiekt, nazywając go "oMouse" i daje do niego w stepie x = mouse_x; y = mouse_y;

 

Jest jakaś szybsza/wydajniejsza metoda? bez zbędnego tworzenia obiektu dla myszki?

Odnośnik do komentarza
Udostępnij na innych stronach

Ja sobie najpierw piszę skrypt o nazwie mouse_enter

GML
/// mouse_enter(x, y, x2, y2)

var vMx = window_mouse_get_x();

var vMy = window_mouse_get_y();

return vMx > argument0 && vMx < argument2 && vMy > argument1 && vMy < argument3;

Ten skrypt zwraca True jeżeli myszka znalazła się prostokątnym obszarze o rozmiarze x1,y1 do x2,y2 względem okna. bo głównie potrzebuję tego do GUI.

Jak chcesz sprawdzać pozycję myszki względem pozycji w room no to podmień na mouse_x i mouse_y;

 

I teraz z użyciem tej funkcji, tworzenie przycisków jest bardzo proste:

GML
if ( mouse_check_button_pressed(mb_left) && mouse_enter(0, 0, 128, 128) )

{

// myszka nacisnęła na lewy górny róg okna gry

}

Odnośnik do komentarza
Udostępnij na innych stronach

GML
/// mouse_enter(x, y, x2, y2)

var vMx = window_mouse_get_x();

var vMy = window_mouse_get_y();

return vMx > argument0 && vMx < argument2 && vMy > argument1 && vMy < argument3;

 

Ciekawi mnie czy jest przy tym brany pod uwagę short circuit evaluation.

Odnośnik do komentarza
Udostępnij na innych stronach

Nie ogarniam jak się zabrać za tileset do gry top down.Jakie powinny być elementy niezbędne do tworzenia przede wszystkim podłoża,ziemi (mam na myśli coś jak ziemia,kamienie,trawa,krzaczki itp).Zna ktoś moze jakiś dobry tutorial albo przykład na którym można by się jakoś wzorować?

Odnośnik do komentarza
Udostępnij na innych stronach

Nie to mam na myśli.Raczej to CO mam narysować.Póki co mam trop że najlepiej rysować na 9 polach w tym środkowe możliwe do łączenia z samym sobą.Ma ktoś przykład takiego wzorcowego tileseta,dobrze poskładanego? Póki co metodą prób i błędów wszystko mi wychodzi wybitnie niespójne

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ę...