Cum să realizați construcția

Cum puteți realiza construcția blocurilor? Nu în stil Minecraft, ci din diferite modele, cum ar fi pereți, acoperișuri, pe tireină? Pentru ca tu să poți acoperi exact și fără intersecții.






Și totuși, cum să aliniem anvelopele într-o anumită rază cu privire la un punct?
Înțeleg că "trebuie să facem totul înșine", dar nu există scenarii de construcție sau dezvoltări, cel puțin la început, astfel încât să fie verificate coliziunile.
P.S. Cum de a construi un utilizator care să fie afișat în multiplayer, sau cu acesta nu ar trebui să fie un gol? doar în multiplayer nu shag = (

Este puțin probabil că cineva va împărți, el însuși sa confruntat cu problema verificării spațiului liber. Sa dovedit a fi mai greu decât am crezut (bug-ul a fost discret)

Despre sincronizarea prin rețea:

Deci, doar nimic nu va fi afișat, într-un fel sau altul trebuie să gândească și să facă. De asemenea, trebuie să decideți ce rețea veți utiliza.

Despre schimbarea înălțimii dinamice a terenului, undeva aici (pe forum) a fost un exemplu + scenariu, pe măsură ce terenul a fost deformat de explozii.

Un programator este un convertor profesional al halucinațiilor clientului într-un sistem formal rigid.

Dacă cineva este un obiect instancii, atunci dacă instancarea este atunci situația și amestecul va fi văzut de toți jucătorii - nu este dificil. dar dacă a fost apucat și mutat de cineva care nu este complicat atunci nu este sincronizat - deși există și o soluție

Există deja o idee de a utiliza DragRigidBody, blocați rândul, astfel încât zidurile să nu cadă. Dar cum să instanțiați și să vă protejați de ceilalți jucători. Și oricum, DragRigidBody va lucra în multiplayer?
P.S. Acest subiect este primul din Google la cerere "building unity3d", lol

Aici, IMHO, problema principală este sincronizarea, sunt aici cu un prieten care lucrează la un proiect 3D global, în care toată lumea poate construi.
pentru că trebuie să faci un server 24/7 și fiecare intrare să vadă clădirile. Poate chiar și serverul ar trebui descărcat din rețea.

Obțineți mai întâi elementele de bază. Ce este tamponarea. Adică, dacă se folosește comanda standard sau cum este permisă pe foton, atunci această instanță va fi tamponată, adică orice altul care vine, va vedea rezultatul final al tuturor acțiunilor care au fost făcute cu acest proces. Chiar dacă a intrat 100500 de ani după ce au fost efectuate aceste operațiuni. Și cum să nu permiteți altor jucători să atingă obiectul instanțial al altcuiva. Da, foarte simplu, problema este chiar că toate mișcările pe care le va vedea vor fi văzute doar de el și de nimeni altul. Veți avea mari probleme, dar nu și în cazul în care credeți. și în administrarea jocului - salvați contul de înregistrare.






Trageți-l pe Rigibadi în același timp unde să lucreze. Deși în multiplayer, deși unde. iar sincronizarea acestui obiect care nu trage în nici un fel la dredge nu se aplică - este alt cod în totalitate.

Despre el, el vede: Dar despre faptul că schimbările vor fi făcute cu un alt ip, dar proprietarul? Și vor fi alte schimbări în el?
Și ce se va întâmpla cu obiectele după repornirea serverului? Ar trebui să fie salvate într-un fel.

Mi-au spus să învăț elementele de bază. Tot ceea ce invstansiruesh natural nu supraviețuiesc atunci când jocul este repornit. acestea sunt modificările și trebuie să salvați - să alcătuiți baza de date și așa mai departe. Apoi puteți încărca jocul de fiecare dată din bazele cu obiectele construite.

Cât va schimba acest cod? Nu vorbiți despre greșeli, nu terminați să le scrieți sau să le testați. Doar cât va fi această schimbare pentru rețea?

var curObject. solid rigid;
var canMove = false;
var MoveModeOn = false;
var viteză. int = 1;

funcția Actualizare # 40; # 41;
# 123;
dacă # 40; Intrare. GetKey # 40; Cod de acces. M # 41; # 41;
# 123;

MoveModeOn =. MoveModeOn;
canMove = MoveModeOn; // aici este un cod care verifică dacă jucătorul poate construi (el este admin sau este parcela lui)
# 125;
dacă # 40; Intrare. GetKey # 40; Cod de acces. W # 41; curObject canMove # 41;
# 123;
curObject. transformare. poziție. x = curObject. transformare. poziție. x + viteză;
# 125;
dacă # 40; Intrare. GetKey # 40; Cod de acces. S # 41; curObject canMove # 41;
# 123;
curObject. transformare. poziție. x = curObject. transformare. poziție. x - viteza;
# 125;
dacă # 40; Intrare. GetKey # 40; Cod de acces. A # 41; curObject canMove # 41;
# 123;
curObject. transformare. poziție. z = curObject. transformare. poziție. z + viteză;
# 125;
dacă # 40; Intrare. GetKey # 40; Cod de acces. D # 41; curObject canMove # 41;
# 123;
curObject. transformare. poziție. z = curObject. transformare. poziție. z - viteza;
# 125;

var mainCamera = FindCamera # 40; # 41; ;
var hit. RaycastHit;
dacă # 40; Intrare. GetMouseButtonDown # 40; 1 # 41; # 41;
# 123;
dacă # 40; Fizică. Raycast # 40; mainCamera. ScreenPointToRay # 40; Intrare. mousePosition # 41;. lovit. 100 # 41; # 41;
curObject = lovit. solid rigid;
# 125;
# 125;







Articole similare

Trimiteți-le prietenilor: