Skocz do zawartości

Zablokowane Ściana 3D pod ukosem


Rekomendowane odpowiedzi

Mam taki problem:

Jest pewna ulica, która ma być pod jakimś kątem(ukosem). Ponieważ to będzie wjazd na most. Mam taki kod:

GML
{

x1 = x-16;

x2 = x+16;

y1 = y;

y2 = y;

z1 = 32;

z2 = 0;

tex = background_get_texture(texture_wjazdmost);

}

Co w tym kodzie zmienić lub dodać aby ściana stała pod jakimś kątem(ukosem)?

Odnośnik do komentarza
Udostępnij na innych stronach

Sciana w GMie jest zawsze plaska wiec jak zrobisz x albo y1 w jednym miejscu a x albo y2 w drogim, sciana bedzie tak ugieta. Tutaj masz skecz jak to wyglada.

2my9e1i.png

Jak widzisz muszisz sobie wyobrazic bloczek, i wtedy patrzec o ile ma sie sciana pochylac, i w ktora strone, manewrujac y albo x. Z to tylko wysoksc, wiec jak chcesz aby twoj most byl noski albo wysoki, dostosowujesz to sobie.

 

PS

pamietaj tylko przypisywac te x i y do obiektu, bo pozniej ci sie bedzie patrzylo na orientacje w roomie. Z zbytnio roznicy nie ma, chyba ze twoj obiekt lata, a X i Y zawsze manewroj dodajac + i -.

 

E - 23m4k0g.png

Odnośnik do komentarza
Udostępnij na innych stronach

heheh, a podaj kod na rysowanie tej ściany :D bo Wy młodzi robicie często drobne głupie błędy :P ale poradzimy i na to :)

Odnośnik do komentarza
Udostępnij na innych stronach

Hmmm, sprobuj rowniez d3d_draw_wall(costamblabla); Poczekaj zaraz nznajde.

d3d_draw_wall(x1,y1,z1,x2,y2,z2,textura,powatarzanie tekstury,to samo tylko ze w gore, najlepiej zeby tu bylo 1);

Bo sie okaze ze cos zle moje lekcje rozumialem, albo o innym jezyku wysle, ale watpie.

E - HOLERA, sory za te glupoty, w nagrode sam zmarnuje swoj czas szukajac odpowiedzi, GM jest na tyle glupi ze sobie rysuje kwadracik na ziemi i tak ustala wszystko :/

 

E - Psychix, skads ten sposob znam, tylko teraz sobie probuje przypomniec z kad...

 

A kurde gmn sibie pierw rysuje na ziemi a potem rozciaga. Przecie to takie nielogiczne :/

Odnośnik do komentarza
Udostępnij na innych stronach

Przeczytaj sygnę to się dowiesz dlaczego nie.

 

 

GML
d3d_transform_set_identity()

d3d_transform_add_rotation_x(45)

d3d_draw_wall(-16,0,0,16,0,32,tex,1,1)

d3d_transform_add_translation(x,y,z)

d3d_transform_set_identity()

jeśli d3d_draw_wall dziwnie się zachowuje, to użyj d3d_draw_floor, te same argumenty. Jeśli zły obrót, to daj d3d_transform_add_rotation_y lub z.

Edytowane przez Makary155
Odnośnik do komentarza
Udostępnij na innych stronach

Dobrze ale mi wyskakuje błąd:

ERROR in

action number 1

of Draw Event

for object obj_wall4_hor:

 

Error in code at line 4:

d3d_transform_add_translation(x,y,z)

 

at position 36: Unknown variable z

 

 

a jak usunę z z nawiasu to:

FATAL ERROR in

action number 1

of Draw Event

for object obj_wall4_hor:

 

COMPILATION ERROR in code action

Error in code at line 4:

d3d_transform_add_translation(x,y)

 

at position 35: Wrong number of arguments to function or script.

Odnośnik do komentarza
Udostępnij na innych stronach

Pierw sciagnij przyklady i ucz ie czytac kod ze zrozumieniem. Logika przyjdzie z czasem, mi pomoglo. Sprawdz czy czasem nie zrobiles zadnego banalnego bledu, np czy nie patrzysz sie akurat tak. ze sciane widzisz od boku. Pobiegaj bo mapie, moze sie sciana schowala w rogu bo zle koordynacje napisales. Na prawde.

Odnośnik do komentarza
Udostępnij na innych stronach

Na szybko wykonany przykład z pochyloną ścianką:

https://gmclan.org/up348_11_wall_skos.html

 

Ale ja bym jednak proponował zrobić to na primitivach. Będzie wygodniej i precyzyjniej.

 

Jak prymitywy działają:

 

Wywołujesz sobie funkcję

d3d_primitive_begin(pr_trianglelist);

 

teraz przy pomocy

d3d_vertex(x,y,z);

Rysujesz trójkąty.

Każdy trójką wymaga trzech taki funkcji (Dla każdego wierzchołka)

 

Ty żeby swój prostokąt narysować byś potrzebował 2 trójkątów.

 

Na koniec musisz dać

d3d_primitive_end();

 

 

EDIT:

GM jest na tyle glupi ze sobie rysuje kwadracik na ziemi i tak ustala wszystko :/

GM jest rzeczywiście głupi, ale akurat nie dla tego.

Pomyśl skąd GM ma wiedzieć jak ma wyglądać twój kwadracik mając tylko dwa rogi.

Istnieje nieskończenie wiele kwadratów o dwóch podanych przeciwległych wierzchołkach więc dlatego GM rysuje zawsze albo pionową ścianę (dla wall), albo leżącą (floor).

A dla pochylonych trzeba kombinować.

Odnośnik do komentarza
Udostępnij na innych stronach

Naciskasz prawy przycisk myszy na linku i "Zapisz element docelowy jako"

 

 

EDIT: Ten post napisałem bo pan powyżej piskał, że mu znaczki się dziwne robią jak w link kliknie, ale już zedytował posta :)

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ę...