Skocz do zawartości

Położenie kursora w 3D


Rekomendowane odpowiedzi

Chciałbym zrobic top down shootera z celowaniem myszka. Problem sprawiło mi to że GM ma inaczej ustawioną oś y w środowisku 3d i 2d. Jak zrobic aby postać obracała się w kierunku myszki? Jak wogole GM czyta polozenie myszki - wspolrzedne sa od widoku, czy od wielkosci pokoju?

 

Udało mi się cel osiągnąć, ale przy pokoju większym niz widok wszystko sie psuje.

Odnośnik do komentarza
Udostępnij na innych stronach

Jak wspomniałem, chodzi o srodowisko 3d w ktorym osie sa odwrocone (nie mam pojecia skad u tworcow taki pomysl). Taka komenda nie działa po prostu jak zadeklrujemy 3d. Udalo mi sie zrobic zastepujac mouse_y na (room_height - mouse_y). Wtedy postac ladnie obraca sie za kursorem.

 

Natomiast przy zwiekszeniu pokoju te wspolrzedne oczywiscie znow nie pasuja i kombinowalem jak to obliczyc, ale jestem w kropce. Szukalem w helpie gm jak odnosi sie pozycja kursora czy w/g view, czy wielkosci rooma, wtedy mialbym do czego odniesz obliczenia.

 

 

 

 

EDIT: dokopałem się ze to polozenie rooma, wiec z teori (room_height - mouse_y) powinno działac nawet przy zmianie view... no ale nie działa :<

Odnośnik do komentarza
Udostępnij na innych stronach

Znalazłem kilka funkcji w dokumentacji:

display_mouse_get_x() Returns the x-coordinate of the mouse on the display.

display_mouse_get_y() Returns the y-coordinate of the mouse on the display.

display_mouse_set(x,y) Sets the position of the mouse on the display to the indicated values.

window_mouse_get_x() Returns the x-coordinate of the mouse in the window.

window_mouse_get_y() Returns the y-coordinate of the mouse in the window.

window_mouse_set(x,y) Sets the position of the mouse in the window to the indicated values.

window_view_mouse_get_x(id) Returns the x-coordinate of the mouse with respect to the view with index id.

window_view_mouse_get_y(id) Returns the y-coordinate of the mouse with respect to the view with index id.

window_view_mouse_set(id,x,y) Sets the position of the mouse with respect to the view with index id.

window_views_mouse_get_x() Returns the x-coordinate of the mouse with respect to the view it is in (same as mouse_x).

window_views_mouse_get_y() Returns the y-coordinate of the mouse with respect to the view it is in (same as mouse_y).

window_views_mouse_set(x,y) Sets the position of the mouse with respect to the first view that is visible.

Pierwsze trzy odnoszą się do całego ekranu, czyli pozycja myszy względem lewego górnego rogu monitora.

Kolejne trzy - pozycja myszy względem lewego górnego rogu okna gry.

Ostatnie sześć - pozycja myszy względem pozycji view, w którym się znajduje. Przy czym window_views_mouse_get_x() = mouse_x, window_views_mouse_get_y() = mouse_y

Odnośnik do komentarza
Udostępnij na innych stronach

Udało się.

 

direction = point_direction((window_get_width()/2),(window_get_height()/2) , window_mouse_get_x(), window_mouse_get_y())

 

Kursor w 3D nie ma położenia, gra wariuje kiedy porownujemy polozenie do jakiego obiektu(ktory w 3d ma juz 3 wspolrzedne a nie 2). Powyzsze rozwiazanie ma sens oczywiscie tylko wtedy kiedy postac jest zawsze w srodku ekranu, w przypadku mojej gry na szczescie tak jest.

 

Dziekuje jeszcze raz za pomoc. Pozdrawiam

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