kt1117 Opublikowano 25 Lutego 2011 Udostępnij Opublikowano 25 Lutego 2011 Więc chodzi mi o to, by kamerka obracała się razem z graczem, tzn, żeby cały czas widzieć to co przed tobą, tylko d3d_set_projection_ext, ma jakieś dziwne argumenty, dałem wartość w angle, a to mi przybliża i oddala. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 25 Lutego 2011 Udostępnij Opublikowano 25 Lutego 2011 Do tego wystarczy d3d_set_projection. W tej drugiej funkcji argument "angle" zmienia kąt widzenia (nie wiem jak to nazwać) kamery. Tak jak w szerokokątnym obiektywie, możesz zarejestrować więcej obrazu niż w normalnym. E: kod skopiowany z dokumentacji (tak! wystarczyło zajrzeć!): GML d3d_set_projection(x,y,10, x+cos(direction*pi/180),y-sin(direction*pi/180),10, 0,0,1); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 25 Lutego 2011 Autor Udostępnij Opublikowano 25 Lutego 2011 To powoduje widok z góry, ale jak sobie zmienię na 45, to robi tylko ósemki. E:Mój kod to: GML d3d_set_projection(bohater.x,bohater.y+256,bohater.z+256,bohater.x+cos(bohater.direction*pi/180),bohater.y-sin(bohater.direction*pi/180),bohater.z,0,0,1) I robi ósemki, czy kółka. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mentoss Opublikowano 26 Lutego 2011 Udostępnij Opublikowano 26 Lutego 2011 d3d_set_projection(bohater.x,bohater.y+256,bohater.z+256,bohater.x+cos(bohater.direction*pi/180),bohater.y-sin(bohater.direction*pi/180),bohater.z,0,0,1) bohater.y+256? Er ju szur? ujednolić podkreślone, to nie będzie też efektu top-down. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 26 Lutego 2011 Autor Udostępnij Opublikowano 26 Lutego 2011 Chodzi Ci, że skopiowałem kod i nie zmieniłem np. x, na bohater.x? Teraz zmieniłem i kamerka się kręci, ale kamerka jest pod kątem z góry, aktualny kod: GML d3d_set_projection(bohater.x,bohater.y,bohater.z+140,bohater.x+cos(bohater.direction*pi/180),bohater.y-sin(bohater.direction*pi/180),bohater.z,0,0,1) A jak dam: GML d3d_set_projection(bohater.x,bohater.y+256,bohater.z+140,bohater.x+cos(bohater.direction*pi/180),bohater.y-sin(bohater.direction*pi/180),bohater.z,0,0,1) To widok jest dobry, ale kamerka się źle kręci. E: Jak dam: GML d3d_set_projection(bohater.x+(bohater.direction),bohater.y+256,bohater.z+140,bohater.x+cos(bohater.direction*pi/180),bohater.y-sin(bohater.direction*pi/180),bohater.z,0,0,1) To widok jest dobry i kręci się w miarę, ale za wolno i w połowie, przeskakuje na początek. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mentoss Opublikowano 26 Lutego 2011 Udostępnij Opublikowano 26 Lutego 2011 Są trzy osie - x, y i z. oś x - pozioma, oś y - pionowa, oś z - głębokość. mając w funkcji argumenty: GML bohater.x,bohater.y,bohater.z, ustawiamy pozycję dokładnie w miejscu, gdzie aktualnie jest obiekt bohater. Kolejne trzy argumenty pokazują nam, gdzie powinna być skierowana kamerka. GML bohater.x+cos(bohater.direction*pi/180),bohater.y-sin(bohater.direction*pi/180),bohater.z da nam więc pozycję przed bohaterem, na jego wysokości. Kamerka będzie patrzyła przed niego. - - - Podsumowując: niepotrzebne bohater.y+256 daje ci pozycję pod bohaterem (patrząc na niego od góry), a twoje wcześniejsz bohater.z+256 i bohater.z powodowało spojrzenie znad osi z bohatera na jego z (kamerka pochylona była w dół. - - - Jeśli dasz: GML d3d_set_projection(bohater.x,bohater.y,bohater.z,bohater.x+cos(bohater.direction*pi/180),bohater.y-sin(bohater.direction*pi/180),bohater.z,0,0,1) to kamerka będzie poziomo patrzyłą z miejsca bohatera przed niego. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 26 Lutego 2011 Autor Udostępnij Opublikowano 26 Lutego 2011 Czyli nie da się, żeby kamerka patrzyła na bohatera pod kątem z góry i się obracała? Bo teraz jest niby dobrze, gdyby nie to, że widzę tylko ziemię i bohatera, bo wszystko zasłania. Chyba, żebym dał to ext, i w angle wrzucił jakąś wartość, ale to się znowu będzie knociło. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mentoss Opublikowano 26 Lutego 2011 Udostępnij Opublikowano 26 Lutego 2011 ma być za bahaterem i patrzeć na niego pod kątem? Jak w GTA? już skręcam Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 26 Lutego 2011 Autor Udostępnij Opublikowano 26 Lutego 2011 No tak, o coś takiego mi chodzi. E: Kod, który podałeś, robi, że widok jest z góry. Chyba inne obiekty mają jakieś błędy, bo już nic nie rozumiem, z tego co mi powiedziałeś, to ten kod nie ma prawa nie działać. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mentoss Opublikowano 26 Lutego 2011 Udostępnij Opublikowano 26 Lutego 2011 Trzeba więc zamienić je kolejnością i plusa na minusa w sinusach i cosinusach. GML d3d_set_projection(bohater.x-cos(bohater.direction*pi/180),bohater.y+sin(bohater.direction*pi/180),bohater.z+140,bohater.x,bohater.y,bohater.z,0,0,1); powinno działac, ale nie mam przy sobie GM'a, więc sprawdzić nie mogę. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 26 Lutego 2011 Autor Udostępnij Opublikowano 26 Lutego 2011 Nic się nie zmieniło, ale może to nie jest zupełnie t-d, tylko pod malutkim kątem, chociaż bohater jest całkiem "płaski". Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mentoss Opublikowano 26 Lutego 2011 Udostępnij Opublikowano 26 Lutego 2011 to dodawaj do bohater.z ... w pierwszym masz wysokość, z której patrzysz, a w drugim na którą patrzysz. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 26 Lutego 2011 Autor Udostępnij Opublikowano 26 Lutego 2011 To powoduje że widzę wyższe miejsce, lub jest mniejsze, kurczę coś nie tak, a jak zwiększyć kąt? Ostatnio też miałem taki problem, ale w 2d, z lengdirami i go nie rozwiązałem, bo teraz widzę że to musi dodawać, lub odejmować od x, bądź y, w zależności od kierunku, miejsca itd. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mentoss Opublikowano 26 Lutego 2011 Udostępnij Opublikowano 26 Lutego 2011 kąt zmienisz dodając do jednego, a do drugiego nie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 26 Lutego 2011 Autor Udostępnij Opublikowano 26 Lutego 2011 Wtedy się nie kręci, i się nie dziwię, bo znowu współrzędne zmieniają się w złe miejsce. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mentoss Opublikowano 26 Lutego 2011 Udostępnij Opublikowano 26 Lutego 2011 do osi z, nie innej Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 26 Lutego 2011 Autor Udostępnij Opublikowano 26 Lutego 2011 Taki kod: GML d3d_set_projection(bohater.x+sin((bohater.direction-90)*pi/180),bohater.y-cos((bohater.direction+90)*pi/180),bohater.z+100,bohater.x,bohater.y,bohater.z+50,0,0,1) robi to samo, wydaje mi się, że trzeba zrobić tak, by kamera chodziła dookoła większego koła i chyba coś z lenghdirami trzeba pokombinować, ale nie jestem pewien. E: Mam taki kod: GML d3d_set_projection(bohater.x+ (lengthdir_x(100,bohater.direction-90)),bohater.y-lengthdir_y(100,bohater.direction+90),bohater.z+100,bohater.x,bohater.y,bohater.z+50,0,0,1) i widok obracanie jest ok, kąt górny jest ok, ale widzę bohatera od prawej. E: Dzięki Mentoss, dzięki tobie wiem jak działa kamera w Gm, teraz jest wszystko ok, jeśli ktoś chce zobaczyć jaki: GML d3d_set_projection(bohater.x+ (lengthdir_x(200,bohater.direction-180)),bohater.y-lengthdir_y(200,bohater.direction),bohater.z+aa,bohater.x,bohater.y,bohater.z+50,0,0,1) i zamykam temat. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi