Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pjv:laboratoare:2022:03 [2022/11/09 12:27]
alexandru.gradinaru
pjv:laboratoare:2022:03 [2022/11/10 15:05] (current)
alexandru.gradinaru
Line 19: Line 19:
   * Mediul: ​   * Mediul: ​
     * un teren cu 3 lane-uri     * un teren cu 3 lane-uri
-    * turnuri pe fiecare lane (vedeti punctele rosii/​albastre de pe harta) +    * turnuri pe fiecare lane (vedeti punctele rosii/​albastre de pe harta) - ar trebui sa fie diferentiate pe echipe (de ex un steag de culoare deferita, sau o culoare de material deferita etc.
-    * cate o baza pentru fiecare player+    * cate o baza pentru fiecare player ​(de ex un steag de culoare deferita, sau o culoare de material deferita etc.)
 {{ :​pjv:​laboratoare:​2022:​map_of_moba.svg.png |}} {{ :​pjv:​laboratoare:​2022:​map_of_moba.svg.png |}}
   * Playerul are 2 moduri de control. Schimbul intre cele doua moduri se poate face folosind o tasta, sau la anumite evenimente definite de voi   * Playerul are 2 moduri de control. Schimbul intre cele doua moduri se poate face folosind o tasta, sau la anumite evenimente definite de voi
Line 230: Line 230:
 </​code>​ </​code>​
  
-O problema in activitatea agentilor este detectarea player-ului,​ in sensul de referinta. Astfel, avem mai multe variante: 
-  * putem cauta un obiect dupa tag 
-  * intr-o variabila target putem referentia direct player-ul (dar asta inseamna ca la fiecare agent trebuie mapat) 
-  * putem folosi un singleton in care se tine referentiaza playerul si poate fi accesat de oriunde 
  
-<​code>​ 
-public class PlayerManager : MonoBehaviour { 
-  
-  public static PlayerManager instance; 
-  public GameObject player; 
-    ​ 
-  void Awake() 
-  { 
-    instance = this; 
-  } 
- 
-} 
-</​code>​ 
- 
-Folosind varianta simpla cu singleton, putem lua pozitia player-ului de inters, similar cu laboratorul precedent: 
- 
-<​code>​ 
-target = PlayerManager.instance.player.transform;​ 
-</​code>​ 
- 
-Astfel, putem efectua usor operatii care tin de player - de exemplu putem orienta inamicii sau un npc cu fata catre player, in momentul unei interactiuni. 
- 
-<​code>​ 
- 
-        //Roteste cu 90 grade 
-        void RotateN() { 
-         ​Vector3 currentRotation = transform.rotation;​ 
-         ​Vector3 wantedRotation = currentRotation * Quaternion.AngleAxis(-90,​ Vector3.up);​ 
-         ​transform.rotation = Quaternion.Slerp(currentRotation,​ wantedRotation,​ Time.deltaTime * rotationSpeed);​ 
-        } 
-        //Roteste inamicul cu fata catre player ​ 
- void FaceTarget () 
- { 
- Vector3 direction = (target.position - transform.position).normalized;​ 
- Quaternion lookRotation = Quaternion.LookRotation(new Vector3(direction.x,​ 0, direction.z));​ 
- transform.rotation = Quaternion.Slerp(transform.rotation,​ lookRotation,​ Time.deltaTime * 5f); 
- } 
-</​code>​ 
  
 === Miscarea personajului la o destinatie point-and-click === === Miscarea personajului la o destinatie point-and-click ===
pjv/laboratoare/2022/03.1667989668.txt.gz · Last modified: 2022/11/09 12:27 by alexandru.gradinaru
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0