Camera - supapă

Aparatele de control ale camerelor din SDK-ul sursă

Controlerele pentru camere sunt situate în mai multe fișiere sursă, dar cele mai multe sunt centralizate în clasa CInput (sau CSDKInput). Cele mai multe setări și controlul camerei sunt disponibile prin editarea directă a metodelor din clasa CInput. sau prin efectuarea modificărilor dvs. la clasa stub CSDKInput. Rețineți că dacă editați direct clasa CInput. acest lucru poate complica foarte mult actualizarea SDK-ului sursă; pe de altă parte, dacă decideți să lucrați prin clasa CSDKInput. atunci va trebui să înlocuiți și să înlocuiți un număr mare de metode CInput.







Concepte de bază

Înainte de a începe, trebuie să luăm în considerare modul în care camera este reprezentată în motor. Poziția și direcția camerei sunt de obicei reprezentate ca un set de schimburi de coordonate față de player. Puteți presupune că aceste compensări reprezintă un set de instrucțiuni care indică modul de poziționare a camerei în funcție de poziția playerului:

  • Mai întâi, rotiți în jurul axei verticale prin deplasarea componentei vectorului de rotire (rotește camera spre stânga sau spre dreapta).
  • Apoi, rotiți în jurul axei orizontale prin deplasarea componentei vectorului pitch (se mișcă camera în sus sau în jos).
  • În cele din urmă, deplasarea înapoi din poziția curentă prin componenta vectorului de distanță.






Decalajul camerei este stocat în vectorul m_vecCameraOffset. Aveți acces la componentele pitch, răsturnare și distanțare utilizând setul predefinit de valori (PITCH .YAW și DIST) din enum.

Dosare relevante

  • game \ client \ iinput.h conține extensia clasei abstracte CInput.
  • game \ client \ input.h conține clasa principală CInput.
  • game \ client \ in_camera.cpp conține cele mai multe extensii de cameră terțe.
  • game \ client \ sdk \ sdk_in_main.cpp conține clasa CSDKInput. care este folosit pentru a suprascrie funcționalitatea clasei CInput.
  • game \ client \ in_mouse.cpp conține codul specific pentru actualizarea deplasării unei camere ideale pe baza mișcării mouse-ului într-un mod de a treia persoană.

Cum funcționează aparatul foto de la o terță parte

Clasa CInput are acces complet la intrarea tastaturii și a mouse-ului clientului. El poate folosi informații despre mutarea mouse-ului pentru a influența poziția camerei. Prin deplasarea camerei, clientul actualizează variabilele cam_idealpitch și cam_idealyaw pentru a oferi informații despre poziția ideală a camerei. Folosind aceste informații, metoda CInput :: CAM_Think va actualiza decalajul efectiv al camerei pentru a urmări mișcarea mouse-ului. Această urmărire este efectuată cu o întârziere ușoară pentru a adăuga un efect de urmărire frumos, în loc să se conecteze instantaneu la o nouă poziție.

În plus, metoda CInput :: CAM_Think efectuează o detecție de coliziune de bază cu aparatul foto pentru a vă asigura că camera nu se rupe prin perete. Aparatul foto se va muta automat în apropierea player-ului în cazul în care se află ceva între player și poziția camerei.







Articole similare

Trimiteți-le prietenilor: