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
// 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();