AdiSlayer Opublikowano 1 Lutego 2012 Udostępnij Opublikowano 1 Lutego 2012 Witam , otóż mam problem . Zrobiłem obiektowi obracanie kamierą , ale chciałbym aby po naciśnięciu klawisza : W - szedł przed siebie A - szedł w lewo D - szedł w prawo S - szedł do tyłu 12:48 EDIT : Z jakiegoś tutoriala wyciągłem Chodzenie w lewo i prawo tak to wygląda : W lewo : GML { var xn,yn; xn = x - sin(direction*pi/180); yn = y - cos(direction*pi/180); if not place_meeting(xn,yn,obj_wall_basic) { x = xn; y = yn; } } W prawo: GML { var xn,yn; xn = x + sin(direction*pi/180); yn = y + cos(direction*pi/180); if not place_meeting(xn,yn,obj_wall_basic) { x = xn; y = yn; } } Ale nie wiem co jest w tym kodzie na dole nie tak , bo na tutorialu obiekt szedł przed siebie i po puszczeniu klawisza stawał , a umnie ciągle idze ;/ Tak wygląda kod : GML { var maxspeed; if keyboard_check(vk_shift) maxspeed = 3 else maxspeed = 1.5; if (speed < maxspeed ) speed = min(maxspeed ,speed+0.4); } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 1 Lutego 2012 Udostępnij Opublikowano 1 Lutego 2012 GML if ( keyboard_check( ord('W') ) ) { x+= cos( CamDirZ * pi/180 )*Speed; y+= sin( CamDirZ * pi/180 )*Speed; } if ( keyboard_check( ord('S') ) ) { x+= -cos( CamDirZ * pi/180 )*Speed; y+= -sin( CamDirZ * pi/180 )*Speed; } if ( keyboard_check( ord('A') ) ) { x+= cos( (270 + CamDirZ) * pi/180 )*Speed; y+= sin( (270 + CamDirZ) * pi/180 )*Speed; } if ( keyboard_check( ord('D') ) ) { x+= cos( (90 + CamDirZ) * pi/180 )*Speed; y+= sin( (90 + CamDirZ) * pi/180 )*Speed; } Kod jest z mojej gry, CamDirZ to kąt fi na tym rysunku> http://pl.wikipedia.org/wiki/K%C4%85ty_Eulera Kąt yaw Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
AdiSlayer Opublikowano 1 Lutego 2012 Autor Udostępnij Opublikowano 1 Lutego 2012 if ( keyboard_check( ord('W') ) ) { x+= cos( direction * pi/180 )*2; y+= sin( direction * pi/180 )*2; } Hmm... nie wiem czy to ma tak wyglądać , ale -fajnie bo ide i się normalnie zatrzymuję :) + -ide w jednym kierunku , a nie przed siebie ;/ - Pewnie to ja coś sknociłem ; ) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 1 Lutego 2012 Udostępnij Opublikowano 1 Lutego 2012 podaj kod na twoją perspektywę i ten gdzie zmieniasz kierunek kamery Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
AdiSlayer Opublikowano 1 Lutego 2012 Autor Udostępnij Opublikowano 1 Lutego 2012 [Create] GML d3d_start(); d3d_set_hidden(true); d3d_set_lighting(false); d3d_set_culling(false); texture_set_interpolation(true); draw_set_color(c_white); d3d_set_perspective(true); zdirection = 0; gun = d3d_model_create(); d3d_model_block(gun,0,-1,1, 7,1,0,0.3,0.3); [steps] GML direction-=(display_mouse_get_x()-display_get_width()/2)/8; zdirection-=(display_mouse_get_y()-display_get_height()/2)/8; display_mouse_set(display_get_width()/2,display_get_height()/2); {if zdirection > 89 then zdirection = 89;} {if zdirection < -89 then zdirection = -89;} [draw] GML d3d_set_projection(x,y,13, x+cos(direction*pi/180),y-sin(direction*pi/180),13+tan(degtorad(zdirection)), 0,0,1); d3d_transform_set_identity(); d3d_transform_add_rotation_y(zdirection); d3d_transform_add_rotation_z(direction); d3d_transform_add_translation(x+0.05,y+0.05,13+0.05); d3d_model_draw(gun,0,1.2,-2,background_get_texture(tex_gun)); d3d_transform_set_identity(); chyba zaraz to zleje i wracam do 2d xd Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 1 Lutego 2012 Udostępnij Opublikowano 1 Lutego 2012 Powinno być dobrze, moja perspektywa w FPSie dużo się od twojej nie różni. Możesz podesłać mi projekt? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
AdiSlayer Opublikowano 1 Lutego 2012 Autor Udostępnij Opublikowano 1 Lutego 2012 no moge wysłać ci go na gg czy tutaj wrzucić ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 1 Lutego 2012 Udostępnij Opublikowano 1 Lutego 2012 no moge wysłać ci go na gg czy tutaj wrzucić ? Możesz na gg akurat na nim jestem Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 1 Lutego 2012 Udostępnij Opublikowano 1 Lutego 2012 możnaby rzutować punkt (raczej wektor od near do far plane) screena przez macierz projekcji, po czym sprawdzać, co koliduje z tym rayem i który jest najbliżej (wartość najbliżej near plane) 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ę