Această caracteristică poate fi activată făcând clic pe caseta Character din fila aflată în panoul Physics.
Din punctul de vedere al motorului, personajul însuși este un obiect fizic care se poate ciocni cu alte obiecte fizice sau poate fi influențat de forțe fizice cum ar fi gravitația și plutirea.
Obiectul personaj poate fi ușor controlat folosind mai multe metode API, cu un cuvânt cheie pentru personaj în numele lor. Toate aceste metode se află în modulul API din physics.
Toate setările afișate aici devin disponibile după activarea casetei Character.
Walk speed - Acest parametru stabilește viteza de mers pe jos a unui personaj (măsurată în metri pe secundă). Valoarea cea mai mică posibilă a acestui parametru este zero, în timp ce cea mai mare valoare este de 10. Valoarea implicită este 4.
Run Speed - Este viteza de alergare a personajului (măsurată în metri pe secundă). Poate lua valori de la zero până la 20. Valoarea implicită este 8.
Step Height - Aceasta este înălțimea maximă a unui obstacol pe care personajul îl poate depăși (în metri). Valoarea acestui parametru poate varia de la zero la 1. Valoarea implicită a parametrului este 0,250.
Jump Strength - Acest parametru stabilește puterea saltului personajului. Valoarea sa minimă este zero, iar valoarea maximă este de 50. Setat implicit la 5.
Waterline - Acest parametru stabilește linia de plutire a personajului. Linia de apă este măsurată față de centrul formei fizice a obiectului (nu față de rețeaua obiectului). Dacă un obiect este scufundat în apă sub această linie, acesta va pluti. Valoarea sa poate varia de la -2 la 2. Este setat la zero în mod implicit.
Motorul Blend4Web are opțiunea de a configura rapid un personaj principal, care poate fi controlat de utilizator. Acest caracter va avea doar funcționalități de bază, dar poate fi configurat fără programare.
Pentru a face setări la un personaj de bază, urmați etapele următoare:
Acum, în scenă va fi prezent un personaj principal care are o cameră atașată.
Personajul poate fi controlat în cea mai mare parte în același mod ca și o cameră obișnuită de tip Eye:
Notă: în scenă poate fi prezent un singur personaj principal. Dacă în scenă se află mai multe personaje, motorul va folosi primul dintre ele ca personaj principal și le va ignora pe celelalte.
Personajul principal descris mai sus poate oferi numai funcționalități generice. Dacă aveți nevoie de mai mult control asupra comportamentului personajelor, ar trebui să utilizați metode din modulul fps.
Cea mai importantă dintre ele este metoda enable_fps_controls(), care, așa cum sugerează numele acesteia, este folosită pentru a inițializa personajele din scenă. Metoda poate fi folosită astfel:
var m_fps = require("fps");
m_fps.enable_fps_controls();Această metodă trebuie utilizată la începutul aplicației (în funcția load_cb) pentru a activa comenzile pentru personaje.
Notă: Această metodă poate intra în conflict cu metoda enable_camera_controls (), care este utilizată pentru a activa personajul principal descris în secțiunea anterioară. Aceste două metode nu ar trebui utilizate simultan.
Metoda are următorii parametri opționali:
character - stabilește obiectul personaj. Legătura cu caracterul poate fi preluată apelând metoda get_first_character(). Ar trebui să fie utilizat în cazul în care în scenă se află mai mult de un personaj.
element - specifică elementul HTML la care metoda adaugă listeners.
motion_cb - specifică funcția de apel invers care este apelată atunci când personajul își schimbă direcția.
gamepad_id - specifică ID-ul (identificatorul) gamepad-ului conectat la sistem.
forward_sens, backward_sens, right_sens, left_sens, jump_sens, fly_sens - acești parametri sunt utilizați pentru a seta matrici de tipuri de senzori pentru acțiunile specifice personajului cum ar fi mersul în direcții diferite, sărituri și așa mai departe.
rotation_cb - specifică funcția de apel invers, care este apelată atunci când se rotește un personaj sau Camera.
lock_camera – la setarea true a acestui parametru, obiectul camera va deveni copilul personajului (va urmări mișcarea acestuia).
Alte metode importante sunt set_cam_sensitivity() și set_cam_smooth_factor().
Prima metodă stabilește sensibilitatea camerei (definită de o valoare numerică în intervalul de la zero la 100). A doua metodă definește cât de lin se deplasează camera (poate lua valori între 0 și 1.0) .
Stările personajului sunt valori constante care reprezintă comportamentul actual al personajului (în acel moment - merge sau zboară sau face orice altceva). Fiecare personaj prezent într-o scenă are întotdeauna o singură stare.
Stări disponibile ale personajelor:
CS_ CLIMB - personajul se cațără,
CS_FLY - personajul zboară,
CS_RUN - personajul aleargă,
CS_STAY - personajul nu se mișcă,
CS_WALK - personajul merge.
Starea actuală a unui anumit personaj poate fi preluată utilizând metoda get_character_state(), în timp ce o anumită stare poate fi atribuită unui personaj cu metoda switch_state(). Exemplul următor arată modul în care se pot utiliza aceste două metode:
var m_fps = require("fps"); var current_state = m_fps.get_character_state(); if (current_state == m_fps.CS_FLY) m_fps.switch_state(m_fps.CS_WALK);Modulul fps oferă mijloace pentru legarea diferitelor acțiuni la evenimente ale personajelor. Metoda bind_action() este folosită astfel:
var m_fps = require("fps"); var m_ctl = require("controls"); var action_cb = function(value) { console.log("Q key pressed."); } m_fps.bind_action(m_fps.AT_PRESSED, [m_ctl.KEY_Q], action_cb);
Această metodă include următorii parametri:
Funcția action_cb va fi apelată de fiecare dată când utilizatorul realizează o acțiune definită de primul parametru.