Skocz do zawartości

Celownik snajperski


uzu13

Rekomendowane odpowiedzi

Witam. Zrobiłem silnik gry, w której się klawiszami 1;2;3;4; zmienia bron. Pod 1 jest piesc, 2 pistolet, 3 karabin, 4 snajperka. Z kazda bronia zmienia sie celownik. Kazdy celownik to obiekt ktory podaza za kursorem. W obiekcie player w stepie mam view_object=player ( czy jakos tak nie pamietam ) co powoduje ze view lecie za player'em. Chcę zrobic ze jak wlacze snajperke ( zmienia sie celownik na snajperski ) i jak myszka ( celownikiem ) podjade pod krawedz ekranu, chce aby sie on przesuna. Ale w taki sposob, aby objekt player byl dalej w ekranie, aby nie wyjezdzal mi za ekran. Probowalem tak, ze w celowniku w create dawalem kod view_object=obj_cel_sniper ale jak w grze zmienialem na snajperke, lekki ruch myszka sprawial ze latalem celownikiem po calym roomie a player zostawal...

 

troche pokrecilem ale jak ktos nei za bardzo lapie, prosze pisac to wytlumacze bardziej.

Odnośnik do komentarza
Udostępnij na innych stronach

GML
if(snajperka_on==1)

{

dist=point_distance(player.x,player.y,mouse_x,mouse_y);

obj_cel_sniper.x=player.x+lengthdir_x(dist/2,point_direction(player.x,player.y,mouse_x,mouse_y))

obj_cel_sniper.y=player.y+lengthdir_y(dist/2,point_direction(player.x,player.y,mouse_x,mouse_y))

}

else

{

obj_cel_sniper.x=player.x;

obj_cel_sniper.y=player.y;

}

 

podazanie viewa nadal za objectem obj_cel_sniper

 

tylko laskawie nie rysuj sprita celownika w obiekcie obj_cel_sniper tylko gdziekolwiek na wspolzednych mouse_x i mouse_y

Odnośnik do komentarza
Udostępnij na innych stronach

@Up: Bez sensu to jest. Wartość odległości w tym wypadku musi być stała (boję się wiedzieć, jak by to w praktyce wyglądało), więc idąc tym tokiem myślenia:

GML
view_object = celownik;

 

dist = point_distance( player.x, player.y, mouse_x, mouse_y );

if ( dist > 200 )

{

celownik.x = player.x + lengthdir_x( 200, point_direction( player.x, player.y, mouse_x, mouse_y ) );

celownik.y = player.y + lengthdir_y( 200, point_direction( player.x, player.y, mouse_x, mouse_y ) );

}

Powinno działać.

Odnośnik do komentarza
Udostępnij na innych stronach

@Up: Bez sensu to jest. Wartość odległości w tym wypadku musi być stała (boję się wiedzieć, jak by to w praktyce wyglądało), więc idąc tym tokiem myślenia:

 

zupelny brak zrozumienia idei... ale mozliwe ze wkradl sie tam blad, to go poprawie.

sciagnij "Zaraze" albo "Sheriff" tam masz to zastosowane w praktyce.

Odnośnik do komentarza
Udostępnij na innych stronach

powtorze: zupelny brak zrozumienia idei...

a idea jest taka - celownik oddala sie od gracza ale tak aby i celownik i gracz nadal znajdowal sie na ekranie. a obraz centrowal sie pomiedzy nimi.

a dlaczego dzielimy przez 2? ano poto by view centrowal sie dokladnie w polowie odleglosci miedzy objektem player a celownikiem ktorym jest kursor myszy.

 

nalezy dodac jednak ze player nie moze byc blisko krawedzi rooma poniewaz viewy nie bardzo chca wychodzic poza roomy. i w opcjach views rooma nalezy wpisac Hbor=(polowa szerokosci viewa) i Vbor=(polowa wysokosci viewa). no i oczywiscie trzeba tego viewa wlaczyc.

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