Skocz do zawartości

Super Mario


Rekomendowane odpowiedzi

Rozumiem korzystasz z gotowca.

Pominę 10 stron tekstu o tym ze lepiej abys zrobil wlasnorecznie mspaintowego catch the clown'a i przejde do sedna:

 

Nie ma łatwej i szybkiej odpowiedzi, bo działasz na istniejącym kodzie, którego nie rozumiesz, a którego my nie znamy. Moja odpowiedz zaklada ze uzywany jest alarm do okreslenia kiedy ma byc wyskok oraz ze wiesz jak go znalezc. W innym wypadku pisze na marne, ale trudno.

 

 

To jak to zrobisz zalezy od tego czy odstep czasu ma byc stały zawsze, stały dla danego życia czy losowy między każdym wyskokiem.

Jeżeli ma być zawsze stały to są dwa wyjścia:

1. Zrób oddzielny obiekt na każdy timing(np. wyskok po 0.5s, wyskok po 1s, etc) i takie obiekty ustawiaj sobie w roomie. To najprostrze wyjście. Jak nie chcesz żeby dwa równo skakały po prostu dajesz im różne timingi.

 

2. Jeżeli w obiekcie kuli czas do wyskoku kuli jest określony alarmem np.

alarm[0] = [Jakas tam liczba tutaj lub zmienna]

To jeżeli tam jest zmienna, w room creatorze ustaw te zmienną w kodzie startowym danej instancji na ileśtam stepów.

Jednak jeżeli tam jest jakaś liczba, podmień liczbę na jakąś nową zmienną np. CzasDoWyskoku, wtedy wejdź w create, dodaj tam tę zmienną (np. CzasDoWyskoku = 60)

 

Teraz, jeżeli ustawisz tę zmienną w create INSTANCJI w room editorze, każda postawiona instancja tej kuli może mieć inny timing.

 

Jeżeli ma być stały na dane życie ale inny między zagraniami/życiami:

 

Tak jak już mówiłem wcześniej, gdzieś w tym obiekcie powinien być alarm określający kiedy wyskakuje kula. Jezeli alarm jest ustawiany na zmienna, musisz znalezc te zmienna w create i zmienic ja z jej obecnej wartosci na:

GML
irandom_range(Najkrotszy czas w stepach , najdluzszy czas w stepach)

 

W ten sposob czas skoku bedzie staly.

Oczywiscie, jezeli nie bylo zadnej zmiennej musisz ja sobie stworzyc.

 

Ostatnia opcja czyli za kazdym skokiem inny czas, po prostu w miejscu gdzie ustawiasz czas do wysoku, zamiast ustawiac do zmiennej lub konkretnej wartosci, dajesz samo = irandom_range(Najkrotszy czas w stepach , najdluzszy czas w stepach)

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

GML
//create

sprite_index=lapapegdol

gravity = 0.1

alarm[3] = 5

ready=1

 

//alarm0

visible = 0

gravity = 0

vspeed = 0

alarm[1] = 90

 

//alarm1

visible = 1

vspeed = -8

alarm[2] = 10

 

//alarm2

if x>view_xview[0]-16

and x<view_xview[0]+336

and y<view_yview[0]+256

and y>view_yview[0]-16;

 

//alarm3

alarm[3] = round (random(6)) + 1

 

//step

if vspeed > 4

vspeed = 4

if y < ystart+16 and ready = 1

{

ready = 0

gravity = 0.14

}

 

//outside room

if ready = 0

{

ready = 1

alarm[0] = 10

}

 

 

po pierwsze proszę o kod

po drugie nie korzystam z gotowca,tylko grę robię od podstaw

 

po trzecie mam dodatkowe jeszcze pytanko jak do tej lawnej łapki zrobić tak żeby bez odrębnych spritów tylko za pomocą yscale ustawić zmianę tej łapki,która by się zmieniała

Odnośnik do komentarza
Udostępnij na innych stronach

Skoro to twoj kod, wiesz lepiej od nas ktory alarm zaczyna wyskok z lawy, więc chyba już powinno działać?

 

jak ustawisz sprite_yscale na -1 odwrócisz sprite i zamiast w górę, będzie w dół celować. O to chodzi, prawda?

Tylko wtedy musisz wycentrować origin sprita bo źle się odbije.

Alternatywnie nie żałuj już na tę drugą klatkę.

Jak dasz image_speed = 0 wyłączysz animacje, wtedy tylko ręcznie używasz image_index = [Numer klatki której potrzebujesz].

 

Chyba że kula jest animowana.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeżeli ty napisałeś te alarmy to wiesz, że one określają czas po jakim łapka wyskakuje z lawy i czas po którym spada spowrotem w dół.

Więc wiesz jak zmienić czas po którym wyskoczy na losowy, dodając irandom_range(minimalna wartosc, maksymalna).

 

Jednoczesnie to wlasnie w tych dwóch kodach chesz zmienić image_yscale. na 1 aby mieć oryginalny obraz i -1 na odwrócony.

Odnośnik do komentarza
Udostępnij na innych stronach

dobra,o image_xscale koniec tematu,problem już naprawiłem,ale w dalszym ciągu nie wiem jak ustawić te łapki tak jak w mario na pegasusie,że jak dopiero do nich podejdę(zobaczy mój view je) to wyskoczy,a nie ciągle wszystkie naraz wyskakują,nawet jak ich nie widzę B) :lol: :lol: :lol:

Odnośnik do komentarza
Udostępnij na innych stronach

Na początku niech będą schowane a alarm będzie wstrzymany(alarm[X] = -1), a używając if(distance_to_object( obj ) < X) określ kiedy ma się Alarm włączyć i odkąd mają wyskakiwać :)

 

@ALL UP: czemu tak na niego naskoczyliście, były tu DUŻO, DUŻO głupsze pytania na które udzielano odpowiedzi często w postaci gotowego skryptu z którego autor tematu nawet nic nie rozumiał. Jak chcemy mieć więcej nowych użytkowników nie możemy tak reagować na prostsze pytania...

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