Skocz do zawartości

Zablokowane kamera o 360'


Rekomendowane odpowiedzi

Witam mam małe pytanko ja zrobić ową rzecz otóż mam np. taką kamerę

change_x=(display_mouse_get_x()-512)/16
change_y=(display_mouse_get_y()-384)/16

direction-=change_x
zdirection-=change_y

display_mouse_set(display_mouse_get_x()-change_x*10,display_mouse_get_y()-change_y*10)

xt=x+cos(direction*pi/180);
yt=y-sin(direction*pi/180);
zt=z+sin(zdirection*pi/180);

d3d_set_projection(x,y,z, xt,yt,zt,  0,0,1);

i chciał bym by mi się obracała o 360' w górę i w dół pomożecie ^^

Odnośnik do komentarza
Udostępnij na innych stronach

Ja może pokażę??

var myszx, myszy;

myszx=display_mouse_get_x()-display_get_width()/2;
myszy=display_mouse_get_y()-display_get_height()/2;

direction+=myszx/5;
zdir+=myszy/5;

display_mouse_set(display_get_width()/2,display_get_height()/2);

xt=x+cos(direction*pi/180);
yt=y-sin(direction*pi/180);
zt=z-tan(degtorad(zdir));

d3d_set_projection(x,y,z, xt,yt,zt,  0,0,1);

if (zdir>89) { zdir=89; }
if (zdir<-89) { zdir=-89; }

I to cała filozofia :P

Odnośnik do komentarza
Udostępnij na innych stronach

var myszx, myszy;

myszx=display_mouse_get_x()-display_get_width()/2;
myszy=display_mouse_get_y()-display_get_height()/2;

direction+=myszx/5;
zdir+=myszy/5;

display_mouse_set(display_get_width()/2,display_get_height()/2);

xt=x+cos(direction*pi/180);
yt=y-sin(direction*pi/180);
zt=z+zdir/10

d3d_set_projection(x,y,z, xt,yt,zt,  0,0,1);

Odnośnik do komentarza
Udostępnij na innych stronach

sorry za double posta ale chciałem zwrócić waszą uwagę na chwilkę na ten temat

i nie chciałem zakładać kolejnego tematu który i tak ma bezpośredni związek z tym

udało się oto wreszcie wykombinowałem jak to zrobić macie ^^

 

w Create

z=0;
zdirection=20;
xf=0
yf=0
zf=0
xt=0
yt=0
zt=0
strona=0

 

 

a w Draw

draw_set_color(c_white)
//get half screen size
display_w=display_get_width()/2;
display_h=display_get_height()/2;

//get change
change_x=(display_mouse_get_x()-display_w);
change_y=(display_mouse_get_y()-display_h);

//move camera
if strona=0
direction-=change_x/16;
else if strona=1
direction+=change_x/16;
if strona=0
zdirection+=change_y/12;
else if strona=1
zdirection-=change_y/12;
//limit z

if strona=0
{
if zdirection<-89.99
{
zdirection=-89.99
strona=1
direction+=180
}
else if zdirection>89.99
{
zdirection=89.99
strona=1
direction+=180
}}

else if strona=1
{
if zdirection>89.99
{
zdirection=89.99
strona=0
direction+=180
}
else if zdirection<-89.99
{
zdirection=-89.99
strona=0
direction+=180
}}

//center mouse
display_mouse_set(display_w,display_h);
//from
xf=x;
yf=y;
zf=z;

//to
xt=xf+cos(degtorad(direction));
yt=yf-sin(degtorad(direction));
zt=zf-tan(degtorad(zdirection));
//draw
if strona=0
  d3d_set_projection_ext(xf,yf,zf, xt,yt,zt, 0,0,1,41.13,1.33,0,100);
if strona=1
  d3d_set_projection_ext(xf,yf,zf, xt,yt,zt, 0,0,1,-41.13,1.33,0,100);

 

a teraz dodatkowe pytanko o tuż mam taki kod chodzenia

 

if (keyboard_check(ord('W')))
speed=Scr_Up
else if (keyboard_check(ord('S')))
speed=Scr_Down
else
speed=0

if keyboard_check(ord('D')) //przesuniecie w prawo
{
  xn = x + Scr_Up*sin(direction*pi/180)
  yn = y + Scr_Up*cos(direction*pi/180)

    x = xn
    y = yn

}
else if keyboard_check(ord('A')) //przesuniecie w lewo
{ 
  xn = x + Scr_Down*sin(direction*pi/180)
  yn = y + Scr_Down*cos(direction*pi/180)

    x = xn
    y = yn
}

if keyboard_check(ord('C'))
{
     z += Scr_Down
}
else if keyboard_check(vk_space) 
{ 
    z += Scr_Up
}

gdzie :

Scr_Up=20

Scr_Down=-20

i teraz chciał bym by gracz szedł tam gdzie patrzę i to dosłownie

czyli wiecie takie innymi słowem lewitowanie jak w wielu grach gdy się użyje kody XP

to jak pomożecie mi ^^

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...