uzu13 Opublikowano 26 Lutego 2010 Udostępnij Opublikowano 26 Lutego 2010 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 Więcej opcji udostępniania...
Slash (Pental) Opublikowano 26 Lutego 2010 Udostępnij Opublikowano 26 Lutego 2010 Hmm... Dało by to zrobić w ten sposób, że obliczasz różnicę między graczem a środkiem planszy. I np. ustawiasz, że maksymalna odległość to 200px. Kurcze, dam przykład zaraz, bo nie wytłumaczyłem wszystkiego. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
copoconaco Opublikowano 26 Lutego 2010 Udostępnij Opublikowano 26 Lutego 2010 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 Więcej opcji udostępniania...
Slash (Pental) Opublikowano 26 Lutego 2010 Udostępnij Opublikowano 26 Lutego 2010 @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 Więcej opcji udostępniania...
copoconaco Opublikowano 26 Lutego 2010 Udostępnij Opublikowano 26 Lutego 2010 @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 Więcej opcji udostępniania...
Slash (Pental) Opublikowano 26 Lutego 2010 Udostępnij Opublikowano 26 Lutego 2010 Twoją (w sumie moją też, bo chciałem to samo zrobić) ideę rozumiem, tylko, że dzielenie przez 2 mija się z celem. Trzeba wtedy dwa razy szybciej ruszać myszką, a w rzeczywistości ograniczenie to żadne, odległość może wynosić nadal 10 000 pikseli. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
copoconaco Opublikowano 26 Lutego 2010 Udostępnij Opublikowano 26 Lutego 2010 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 Więcej opcji udostępniania...
Dawidds Opublikowano 26 Lutego 2010 Udostępnij Opublikowano 26 Lutego 2010 Jeśli pozycję viewa ustawia się "ręcznie" (view_xview[], nie object following w ustawieniach rooma) to wychodzą ładnie poza rooma :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę