nomyzs
-
Postów
15 -
Dołączył
-
Ostatnia wizyta
Typ zawartości
Profile
Forum
Wydarzenia
Odpowiedzi opublikowane przez nomyzs
-
-
Ale wtedy chyba będzie to się niszczyło po dotknięciu w dowolnym miejscu, a mi zależy żeby to się stało tylko wtedy kiedy gracz stoi na górze obiektu.
-
Witam!
Chcę zrobić obiekt, który będzie znikał po stanięciu na nim graczem po sekundzie. Zrobiłem taki kod:
CREATE
GMLniszczenie=falseSTEP
GMLif(place_meeting(x, y-1, obj_player)){
alarm[0]=30
}
if(niszczenie=true)
{
instance_destroy()
}
ALARM 0
GMLniszczenie=trueNiestety obiekt niszczy się po sekundzie, ale gdy się z niego zejdzie. Co jest nie tak?
-
Ok, a więc kod wygląda teraz tak:
STEP
GMLif(keyboard_check_pressed(global.tyl)) //WYZEROWUJE PREDKOSC PRZY COFANIU CZASUvspd=0
hspd=0
}
if(!keyboard_check(global.tyl)) //TWORZY DANE NA STOSIE, GDY NIE COFAMY CZASU
{
ds_stack_push(stosx,x)
ds_stack_push(stosy,y)
}
if(keyboard_check(global.tyl))
{
if(!ds_stack_empty(stosx))
{
if(keyboard_check(global.szybko)) //SZYBICIEJ
{
if(!keyboard_check(global.wolno))
{
repeat(n_razy_przys)
{
if(!ds_stack_empty(stosx))
{
xy= ds_stack_pop(stosx)
yx= ds_stack_pop(stosy)
}
else
{
xy=xy
yx=yx
}
}
if(!ds_stack_empty(stosx))
{
x= ds_stack_pop(stosx)
y= ds_stack_pop(stosy)
}
else
{
x=xy
y=yx
}
}
}
if(keyboard_check(global.wolno)) //WOLNIEJ
{
if(!keyboard_check(global.szybko))
{
i+=1
xy=ds_stack_top(stosx)
yx=ds_stack_top(stosy)
if(i mod n_razy_spo=0)
{
x = ds_stack_pop(stosx)
y = ds_stack_pop(stosy)
i=n_razy_spo
}
else
{
x=(xy+x)/2
y=(yx+y)/2
}
}
}
if(!keyboard_check(global.wolno)) //NORMALNIE
{
if(!keyboard_check(global.szybko))
{
x= ds_stack_pop(stosx)
y= ds_stack_pop(stosy)
}
}
}
}
CREATE
GMLstosx=ds_stack_create()stosy=ds_stack_create()
xy=0
yx=0
global.slow=true
i=1
n=1 //JAK DUZE SPOWOLNIENIE/PRZYSPIESZENIE(1 TO 2 RAZY WOLNIEJ/SZYBCIEJ)
n_razy_spo=2*n
n_razy_przys=1*n
W spowolnieniu zrobiłem, tak aby liczba nie była duża. Dobrze to jest?
Zrobiłem też wyliczanie średniej, tylko to tak średnio działa, tzn. jest lepiej jak bez tego, tylko sprite tak się "trzęsie", skacze. Czy da się to lepiej zrobić?
I czy reszta jest ok?
-
Minęliśmy się :jezor:
Spróbuję zrobić to z twoim kodem i dam znać jak działa :)
-
Teraz napotkał mnie kolejny problem, gdyż chcę dodać opcję przyśpieszenia i zwolnienia cofnięcia w czasie. Z przyśpieszeniem poradziłem sobie tak:
GMLif(keyboard_check(global.tyl) and !ds_stack_empty(stosx)){
if(keyboard_check(global.szybko))
{
xy= ds_stack_pop(stosx)
yx= ds_stack_pop(stosy)
if(!ds_stack_empty(stosx))
{
x= ds_stack_pop(stosx)
y= ds_stack_pop(stosy)
}
else
{
x=xy
y=yx
}
}
else
{
x= ds_stack_pop(stosx)
y= ds_stack_pop(stosy)
}
}
Ale nie mam pomysłu ze zwolnieniem. Kombinowałem coś z alarmami, ale nie wychodziło :/ Jak można byłoby to zrobić?
I czy optymalniej byłoby najpierw sprawdzać, czy jest wciskany klawisz odpowiedzialny za cofnięcie czasu, a dopiero później czy stos nie jest pusty?
Edit.
W końcu wymyśliłem jak to zrobić i całość wygląda tak:
STEP
GMLif(keyboard_check_pressed(global.tyl)) //WYZEROWUJE PREDKOSC PRZY COFANIU CZASUvspd=0
hspd=0
}
if(!keyboard_check(global.tyl)) //TWORZY DANE NA STOSIE, GDY NIE COFAMY CZASU
{
ds_stack_push(stosx,x)
ds_stack_push(stosy,y)
}
if(keyboard_check(global.tyl)) //COFANIE
{
if(!ds_stack_empty(stosx)) //CZY STOS NIE JEST PUSTY
{
if(keyboard_check(global.szybko)) //SZYBICIEJ
{
if(!keyboard_check(global.wolno))
{
xy= ds_stack_pop(stosx)
yx= ds_stack_pop(stosy)
if(!ds_stack_empty(stosx))
{
x= ds_stack_pop(stosx)
y= ds_stack_pop(stosy)
}
}
}
if(keyboard_check(global.wolno)) //WOLNIEJ
{
if(!keyboard_check(global.szybko))
{
if(slow=true)
{
slow=false
x=ds_stack_pop(stosx)
y=ds_stack_pop(stosy)
alarm[1]=2
}
}
}
if(!keyboard_check(global.wolno)) //NORMALNIE
{
if(!keyboard_check(global.szybko))
{
x= ds_stack_pop(stosx)
y= ds_stack_pop(stosy)
}
}
}
}
CREATE
GMLstosx=ds_stack_create()stosy=ds_stack_create()
xy=0
yx=0
slow=true
Alarm zmienia jedynie wartość na true.
Czy w kodzie wszystko jest ok? W grze całość działa :)
-
Aaaa tak, dałem kod to stepa :/
Dzięki za pomoc :)
-
A twój "KONTROLER CZASU" jest w tym samym obiekcie co "CZAS"?
W tym samym.
Ok, dzięki zrobię tak.
A jak zrobić to z pokazywaniem czy jest dostępna przeszłość, tak jak zrobić? Czemu z tym kodem co dałem nic się nie pokazuje?
-
Właśnie inspirowałem się twoim przykładem :) Zrobiłem coś takiego:
GML//CZASvspeed=0
hspeed=0
}
if(!keyboard_check(vk_space)) //TWORZY DANE NA STOSIE, GDY NIE COFAMY CZASU
{
ds_stack_push(stosx,x)
ds_stack_push(stosy,y)
}
if(keyboard_check(vk_space) and !ds_stack_empty(stosx) and !ds_stack_empty(stosy)) //SCIAGA DANE ZE STOSU, JESLI NIE SA PUSTE
{
x=ds_stack_pop(stosx)
y=ds_stack_pop(stosy)
}
//END CZAS</span>
Wszystko jest ok?
Teraz chciałbym zrobić obrazek pokazujący, czy jest dostępna przeszłość i nie wiem jak to zrobić, żeby działało. Jak na razie stworzyłem zmienną globalna "przeszlosc" i w stepie dałem taki kod:
GML//KONTROLER CZASU{
global.przeszlosc=false
}
else
{
global.przeszlosc=true
}
//END KONTROLER CZASU</span>
I co dalej? Próbowałem stworzyć nowy obiekt, który wyświetlał by sprite'y z takim kodem:
GMLif(global.przeszlosc=true){
draw_sprite(spr_przeszlosc, -1, x, y);
}
else
{
draw_sprite(spr_brak, -1, x, y);
}
Ale po umieszczeniu go w room'ie nic się nie pojawia :/
-
Dzięki, utworzenie w create pomogło :)
-
Witam! :)
Próbuję zrobić, aby spacja cofała ruch, ale niestety gdy ją naciskam obiekt przenosi się do krawędzi ekranu(choć tam w ogóle nie stał), a nie do poprzedniej pozycji.
GMLstos=ds_stack_create()if(keyboard_check(vk_right))
{
x+=1
}
if(keyboard_check(vk_space))
{
x=ds_stack_pop(stos)
}
else
{
ds_stack_push(stos,x)
}
Co jest w tym kodzie źle?
-
Czy jest jakiś sposób, aby myszka nie wychodziła za okno gry? Jeśli tak to w jaki sposób to zrobić?
Pozdrawiam! :)
-
Witam! :)
Czy warto instalować GM'a na dysku SSD? Czy używa on do jakiś sensownych rzeczy dysku?
Pozdrawiam!
-
A ja też ciekaw jestem, bo trochę przepiłem pieniędzy i nie wiem czy mi starczy ;x
Also, zamawiasz studio czy 8?
Studio Pro, kupiłem go w końcu normalnie na Polskę :)
-
Witam!
Chcę kupić GM'a na oficjalnej stronie. Jest tam do wyboru kraj zamieszkania. Jeśli wybieram Polskę doliczany jest podatek, a jeśli na USA to jest bez. Dlatego mam pytanie, czy mogę wybrać jako USA? Czy będzie jakaś różnica oprócz tego VAT-u? Czy będę mógł zapłacić polską kartą?
W jaki sposób wy go kupiliście?
Pozdrawiam!
Znikający obiekt po stanięciu
w Pytania początkujących
Opublikowano
Dzięki, pomogło :)
A jak to działa, bo nie mogę znaleźć o tym porównaniu(?) nic znaleźć?