Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Dopasowanie osi modela do osi podłoża.


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
1 odpowiedź w tym temacie

#1 Thilidric

    Początkujący

  • Użytkownik

Reputacja: 4
Nowy

  • Postów:11
  • Imię:Krzysiek
  • Lokalizacja:Piła
Offline

Napisano 17.02.2014 23:20

Witam.

 

Szukam sposobu, który pozowoli mi dopasować kąt (oś) modelu do podłoża na jakim znajduje się byt player. Model jest zwykłą płaszczyzną więc nie powinno być dużych problemów, pytanie tylko w jaki sposób mogę pobrać kąt podłoża na jakim stoi postać?

 

Pierwsza moja myśl skierował mnie na "pev_groundentity" jednak to mi zwróci tylko index, a jak wiadomo powierzchnia tego bytu może być o różnym kształcie, ma ktoś jakiś pomysł?

 

Pozdrawiam, Thilidric.


  • +
  • -
  • 0

b_350_20_323957_202743_F19A15_111111.png


#2 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 23.02.2014 14:35

Cześć,

 

może Ci się przydać tracing.

 

 

Pobierz origin bytu, odejmij tak z 1000 na osi pionowej origin[2] i miedzy tymi punktami puść TraceLine.

 

Wersja z fakemeta

new Float:vfStart[3], Float:vfEnd[3];
new tr2 = create_tr2();

pev( ent, pev_origin, vfStart);
vfEnd[0] = vfStart[0];
vfEnd[1] = vfStart[1];
vfEnd[2] = vfStart[2] - 1000.0;
engfunc( EngFunc_TraceLine, vfStart, vfEnd, IGNORE_GLASS|IGNORE_MISSILE|IGNORE_MONSTERS, ent, tr2);

new Float:vfNormal[3];
get_tr2( tr2, TR_vecPlaneNormal, vfNormal );

Wektor vfNormal[] jest teraz wektorem prostopadłym do podłoża pod obiektem `ent`. Możesz go zamienić na kąt obrotu bytu np. angle_vector();

Będziesz musiał odwrócić któreś z osi przed angle_vector mnożąc przez -1, wydaje i się że pierwsze 2 osie. Tej części nie jestem pewien, ale to będziesz coś w stylu:

vfNormal[0] = -vfNormal[0];
vfNormal[1] = -vfNormal[1];

ange_vector( vfNormal, ANGLEVECTOR_FORWARD, vfNormal );
set_pev( ent, pev_angles, vfNormal );

Użytkownik undefined edytował ten post 23.02.2014 14:36

  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych