Skocz do zawartości

Obracające się drzwi 3d


Ice Cube
 Udostępnij

Rekomendowane odpowiedzi

Cześć 

z racji tego iż z matmy jestem kiepski

walczę nad obracającymi się dżwiami

ale nie wychodzi ;/

 

ruchdrzwi+=0.2
if ruchdrzwi>180 ruchdrzwi=0
d3d_draw_wall(x-4+sin(ruchdrzwi),y-4+sin(ruchdrzwi),25,x+4+sin(ruchdrzwi),y+4+sin(ruchdrzwi),10,sprite_get_texture(spr_drzwi,1),1,1)

 


chciałbym aby drzwi obracały się w miejscu help! ;) 

Odnośnik do komentarza
Udostępnij na innych stronach

  • Ice Cube zmienił(a) tytuł na Obracające się drzwi 3d

1. Źle używasz trygonometrii do obracania wektorów, potrzebne są 2 funkcje trygonometryczne, cos i sin, coś takiego:

// x' = x * cos α - y * sin α
// y' = x * sin α + y * cos α

var angle = degtorad(ruchdrzwi); 
var rx = cos(angle);
var ry = sin(angle);

d3d_draw_wall(
  x - 4 * rx,
  y - 4 * ry,
  25,
  x + 4 * rx,
  y + 4 * ry,
  10,
  sprite_get_texture(spr_drzwi,1),
  1,
  1
)

2. Użyj macierzy, macierze są super :P

// Wersja powyższego rozwiązania, ale przedstawione jako macierz:
// [cos α -sin α]
// [sin α cos α]

var angle = degtorad(ruchdzwi);

d3d_transform_set_rotation_z(angle);
d3d_transform_add_translation(x, y);

d3d_draw_wall(-4, 0, 25, 4, 0, 10, sprite_get_texture(spr_drzwi, 1), 1, 1)

d3d_transform_set_identity();

 

  • Super (+1) 1
Odnośnik do komentarza
Udostępnij na innych stronach

sinusy, kosinusy,radiany... popaliły mi sie styki 

 

 

angle+=4 if angle>360 angle=0
d3d_transform_set_rotation_z(angle);
d3d_transform_add_translation(x, y,2);
d3d_draw_wall(-4, 0, 25, 4, 0, 10, sprite_get_texture(spr_przejscie, 1), 1, 1)
d3d_transform_set_identity();

 

chyba pokochałem macierze :P -czymkolwiek one są :D 

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ę
 Udostępnij

  • Ostatnio przeglądający   0 użytkowników

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