Hanjuso Opublikowano 9 Września 2005 Udostępnij Opublikowano 9 Września 2005 Tak se rozmyslalem zeby zrobic strzelanke fpp 3d na 2 playerow. Probowalem costam robic niby bylo wszytko ok ale mam problem z ustawieniem widoku. Na 2 ekranach wyswietla mi sie to samo, widok 1 gracza. Da sie wogle zrobic gre na 2 w engine 3d gm'a?? :blink: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 9 Września 2005 Udostępnij Opublikowano 9 Września 2005 Da się :] A ty chcesz to robić w MP ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marmot Opublikowano 9 Września 2005 Udostępnij Opublikowano 9 Września 2005 Robisz tak samo jak na 2D, tylko potem dodajesz 3D :P . Mi działa... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 9 Września 2005 Administratorzy Udostępnij Opublikowano 9 Września 2005 jest przykład na forums.gamemaker.nl Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Hanjuso Opublikowano 9 Września 2005 Autor Udostępnij Opublikowano 9 Września 2005 Da się A ty chcesz to robić w MP ? w mp nie umiem nic jeszcze robic, to ma byc podzielony ekran Robisz tak samo jak na 2D, tylko potem dodajesz 3D . Mi działa... mi nie chce, cos pewnie zle robie jest przykład na forums.gamemaker.nl a gdzie dokladniej bo nie moge znalesc :blink: EDIT. tu moj przyklad, nie chce dzialac, zobaczcie co zle robie bo ja niewiem Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
radSun Opublikowano 10 Września 2005 Udostępnij Opublikowano 10 Września 2005 W graczu1: if (view_current==0) { d3d_set_projection(x,y,10,x+cos(direction*pi/180),y-sin(direction*pi/180),10,0,0,1); } Wgraczu2: if (view_current==1) { 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...
Hanjuso Opublikowano 10 Września 2005 Autor Udostępnij Opublikowano 10 Września 2005 Dziala, dzieki Mam jeszcze jeden problem, jezeli ludzik jest jakims blokiem to jak zrobic zeby ten blok obracal sie w strone kierunku ludzika? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 10 Września 2005 Udostępnij Opublikowano 10 Września 2005 Jeży! Transformation allow you to change the place where things are drawn in the world. For example, the function to draw blocks can only draw axis-parallel blocks. By first setting a rotation transformation you can create rotated blocks. Also sprites are always drawn parallel to the xy-plane. By setting a transformation you can change this. There are two types of functions: functions that set the transformation and functions that add transformations. d3d_transform_set_identity() Sets the transformation to the identity (no transformation). d3d_transform_set_translation(xt,yt,zt) Sets the transformation to a translation over the indicated vector. d3d_transform_set_scaling(xs,ys,zs) Sets the transformation to a scaling with the indicated amounts. d3d_transform_set_rotation_x(angle) Sets the transformation to a rotation around the x-axis with the indicated amount. d3d_transform_set_rotation_y(angle) Sets the transformation to a rotation around the y-axis with the indicated amount. d3d_transform_set_rotation_z(angle) Sets the transformation to a rotation around the z-axis with the indicated amount. d3d_transform_set_rotation_axis(xa,ya,za,angle) Sets the transformation to a rotation around the axis indicated by the vector with the indicated amount. d3d_transform_add_translation(xt,yt,zt) Adds a translation over the indicated vector. d3d_transform_add_scaling(xs,ys,zs) Adds a scaling with the indicated amounts. d3d_transform_add_rotation_x(angle) Adds a rotation around the x-axis with the indicated amount. d3d_transform_add_rotation_y(angle) Adds a rotation around the y-axis with the indicated amount. d3d_transform_add_rotation_z(angle) Adds a rotation around the z-axis with the indicated amount. d3d_transform_add_rotation_axis(xa,ya,za,angle) Adds a rotation around the axis indicated by the vector with the indicated amount. Realize that rotation and scaling are with respect to the origin of the world, not with respect to the object that is to be drawn. If the object is not at the origin it will also move to a different place, which is not what we want. So to e.g. rotate an object over its own x-axis, we must first translate it to the origin, next rotate it, and finally translate it back to its position. This is what the functions to add transformations are for. The following examples might explain this better. Assume we have a sprite spr that we want to draw at position (100,100,10). We can use the following code to do this { d3d_transform_set_translation(100,100,10); draw_sprite(spr,0,0,0); d3d_transform_set_identity(); } Note that because we use a translation we should now draw the sprite at position (0,0). (This assumes the current instance has a depth of 0! If you are not sure, first set the depth.) If we would use this in our first person shooter we would not see the sprite. The reason is that it is still parallel to the xy-plane. We want to rotate it over 90 degrees along the x-axis (or y-axis). So we need to add a rotation. Remember the order: we must first rotate the sprite and then translate it. So we can use the following code. { d3d_transform_set_identity(); d3d_transform_add_rotation_x(90); d3d_transform_add_translation(100,100,10); draw_sprite(spr,0,0,0); d3d_transform_set_identity(); } Sometimes you temporarily want to save the current transformation, for example to add an additional transformation and then restore the old one (this often happens when drawing hierarchical models). To this end you can push the current transformation on a stack and later pop it from the stack to make it the current transformation again. The following functions exist for this: d3d_transform_stack_clear() Clears the stack of transformations. d3d_transform_stack_empty() Returns whether the transformation stack is empty. d3d_transform_stack_push() Pushes the current transformation on the stack. Returns whether there was room on the stack to push it there (if you forget popping transformation you at some moment will run out of room on the stack). d3d_transform_stack_pop() Pops the top transformation from the stack and makes it the current one. Returns whether there was a transformation on the stack. d3d_transform_stack_top() Makes the top transformation the current one, but does not remove it from the stack. Returns whether there was a transformation on the stack. d3d_transform_stack_discard() Removes the top transformation from the stack but does not make it the current one. Returns whether there was a transformation on the stack. Using transformation is a powerful mechanism. But be careful and always set the transformation back to the identity once you are done. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Hanjuso Opublikowano 10 Września 2005 Autor Udostępnij Opublikowano 10 Września 2005 zawsze przed zapytaniem sie patrze w helpa, ale probowalem i nic mi nie wychodzilo. wiec liczylem na cos bardziej konkretnego 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ę