Revael
-
Postów
29 -
Dołączył
-
Ostatnia wizyta
Typ zawartości
Profile
Forum
Wydarzenia
Odpowiedzi opublikowane przez Revael
-
-
Bardziej skomplikowanie nie mogłeś tego opisać. Przecinki mogły by bardzo dużo pomóc.
Nie rozumiem więc strzelam:
GML (Event Destroy objkey2)instance_create(x,y,obj_key)
Wiedziałem, że nikt nie zrozumie :P. Jak zapisać ostatnią znaną pozycję jakiegoś objektu? Tak aby pozniej stworzyl sie w miejscu gdzie sie zniszczyl
-
Chciałbym zrobić tak aby: obj_key1 się niszczył kiedy dotyka gracza(zrobione), kiedy w roomie nie ma obj_key1 nad graczem tworzy się obj_key2(zrobione) i teraz jest problem: kiedy gracz dotyka obj_wall kiedy nad graczem jest obj_key2 obj_key2 się niszczy a obj_key się pojawia w tym miejscu gdzie został zniszczony. W skrócie: jak zrobić aby objekt tworzył się w miejscu jego ostatniego zniszczenia.
Nie wiem jak się za to zabrać :/.
-
Popatrz. Nie ma żadnej blokady.
Gracz wchodząc do zielonego portalu, przenosi się do niebieskiego. Następnie jest od razu teleportowany z powrotem.
Polecam używać debugera i patrzeć co się dzieje krok po kroku.
Nie mam pojecia jak dziala debugger mode. Zrobilem zeby z niebieskiego do zielonego klikalo sie strzalke w dol i jest ok.
-
Może nie wykrywa kolizji? Kod wydaje mi się dobry, więc to chyba jedyne rozwiązanie.
Musisz sprawdzić wgl zachodzi kolizja między graczem a zielonym teleportem, przykładowo w ewencie kolizji zamknij grę.
Kolizja się pojawia bo mam inny objekt do narysowania czegoś kiedy jest właśnie ta kolizja
czemu podwójne with(obj_player)?GML with(obj_player)
{
x=obj_portal_green.x
y=obj_portal_green.y
}
nie wystarczy
GML x=obj_portal_green.x
y=obj_portal_green.y
?
Jednak wystarczy to tak jak mówisz, ale problem nie zniknął, dalej z zielonego nie można przejść do niebieskiego
-
Problem polega na tym, iż z portalu niebieskiego teleportacja działa poprawnie (teleportacja do zielonego), ale z zielonego do niebieskiego już działać nie chce :/ (kod jest w objekcie do kontrolowania portali (to nie jest gracz))
GML//Green to Blue{
if place_meeting(x,y,obj_portal_green) && keyboard_check_pressed(vk_up)
{
if instance_exists(obj_portal_blue)
{
effect_create_above(ef_ring,obj_portal_green.x,obj_portal_green.y,0.6,c_green);
with(obj_player)
{
x=obj_portal_blue.x
y=obj_portal_blue.y
}
}
}
}
//Blue to Green
with(obj_player)
{
if place_meeting(x,y,obj_portal_blue) && keyboard_check_pressed(vk_up)
{
if instance_exists(obj_portal_green)
{
effect_create_above(ef_ring,obj_portal_blue.x,obj_portal_blue.y,0.6,c_blue);
with(obj_player)
{
x=obj_portal_green.x
y=obj_portal_green.y
}
}
}
}
-
Problem mój polega na tym, iż kiedy używam tego kodu to highscore owszem jest ryswany, tyle że wygląda to tak jakby rysowało się nieskończenie wiele wierszy jeden na drugim. Chciałbym tylko jeden wiersz z jednym rekordem i tyle ;(
highscore_add("",score)
draw_highscore(284,480,284,480)
-
Kolega mi pomógł i taki kod działa.
druga_kula = instance_create(x+lengthdir_x(27,direction),y+lengthdir_y(27,direction),obj_bull
et);
druga_kula.direction+=15
trzecia_kula = instance_create(x+lengthdir_x(27,direction),y+lengthdir_y(27,direction),obj_bull
et);
trzecia_kula.direction-=15
-
Tak pod kątem 30 stopni
-
Ok tylko gdy zmieniam kierunek strzału ( przesuwam kursor niżej lub wyżej ) to i tak pociski lecą tak jak na rysunku
-
Jak narazie dalej nie poradziłem sobie z problemem i nie wiem czy rozumiecie o co mi chodzi więc daje rysunek pomocniczy. (znak "+" oznacza gdzie znajduje się kursor podczas wystrzału)
-
Cały pomysł polega na tym, że gry obj_player zbierze obj_bonus_triple to przez następne 10 sekund będzie strzelał potrójnie ( Można by to porównać do Contry kiedy po zebraniu odpowiedniego bonusu strzały leciały w trzech kierunkach ). Jedna kula "główna" leci w stronę kursora a dwie pozostałe tworzą się o 30 stopni w górę i o 30 stopni w dół. Nie mam pomysłu jak to zrobić. Tak wygląda kod strzelania teraz :
if reload = 0 && movement = 0
{
if keyboard_check(vk_space)
{
alarm[0]=30
reload = 1
image_speed = 0.2
audio_play_sound(snd_cannonshot,10,0)
instance_create(x+lengthdir_x(direction,direction),y+lengthdir_y(direction,direc
tion),obj_bullet);
}
}
reload to po prostu przerwa miedzy strzałami
movement jest aby strzał nie mogł być oddany podczas ruchu
-
Śmiga, dziękuje
-
Sprawa wygląda następująco:
Armata obraca się w stronę kursora ( w tym przypadku w stronę celownika )
Ale chciałbym aby nie ważne czy dam kursor bardziej na lewo to i tak armata się dalej nie obkręci.
Armata jeździ po torach ( tylko w górę i w dół ) ale nie chcę aby była możliwość "popatrzenia" armatą bardziej w lewo niż jest to na screenie.
-
Dzięki za odpowiedzi.
with (instance_nearest(obj_bullet)) podziałało
-
Sprawa wygląda następująco:
kiedy pocisk trafi przeciwnika to ten pocisk powinien się niszczyć - i tak jest
tyle ze gdy ten jeden pocisk trafia przeciwnika to cala reszta pocisków które się utworzyły po nim również się niszczy.
Taki mam kodzik w przeciwniku:
(Step Event)
if place_meeting(x,y,obj_bullet)
{
hp -= 1
with (obj_bullet)
{
instance_destroy();
}
}
Co zrobić aby tylko pocisk który trafia przeciwnika się niszczył a reszta dalej sobie "latała"
-
Tutaj macie ten projekt, w obj_player w step evencie jest kod gdzie spawnuje się bullet. Może to wam więcej powie niż ja sam
-
Kod mam wpisany w Step Event + pytanie.
Jak room mam ustawiony na speed 60 to 60 stepow to ile czasu jest?
-
Po części się udało:
Kiedy się przesunę np. w górę i dopiero strzelę to pocisk wylatuje z lufy, ale jeśli się tylko obrócę i nie przesunę to pocisk wylatuje z miejsca innego niż lufa
Kod jaki mam aby obj_bullet się tworzył
if keyboard_check_pressed(vk_space)
{
instance_create(x+lengthdir_x(29,direction), y+lengthdir_y(29,direction),obj_bullet);
}
-
Niestety jeszcze nie wiem jak tego użyć
-
Mam taki problem, że przy wystrzale z armaty w lewo/prawo jest wszystko ok, tylko gdy strzelam w górę lub w dół to kula pojawia się w kole a nie w lufie. (Armata obraca się w strone kursora i pocisk leci też w stronę kursora) Na obrazkach mam nadzieje widać wyraźnie.
-
Dzięki, teraz działa :)
-
Mam w step evencie :
var d = point_distance(mouse_x,mouse_y,x,y);
if d > 0
{
move_towards_point(mouse_x,y,min(d, 32));
}
i gdy trzymam kursor w miejscu to player skacze z lewej na prawa i na odwrot o 32 pixeli
-
Niestety player jak szalał tak szaleje, żadne rozwiązanie nie jest poprawne :((
-
Otóż mój objekt nazwany obj_player porusza się tylko w lewo i prawo za pomocą move_towards_point(mouse_x,y,32). Ale gdy trzymam kursor w miejscu to ten objekt 'szaleje' i lata na lewo i prawo kiedy ma stać w miejscu. Czy da się zrobić tak aby objekt poruszał się z prędkością myszy?
Ostatnia znana pozycja
w Pytania początkujących
Opublikowano
Jak go zdezaktywować? Jaki jest do tego kod?
EDIT : WIELKI Mój błąd... nie ustawiłem tego obiektu w roomie, już wszystko działa ;_;