Differences

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

Link to this comparison view

pjv:laboratoare:02 [2018/10/11 01:49]
127.0.0.1 external edit
pjv:laboratoare:02 [2019/10/16 15:50] (current)
alexandru.gradinaru
Line 1: Line 1:
-===== Laboratorul 02. =====+ ===== Introducere in 2D ===== 
 + 
 + 
 +=== Parametri ==== 
 + 
 +Parametri se pot controla in editor atat timp cat sunt definiti ca variabile publice sau serializabile. 
 + 
 +Se pot defini atat variabile simple cat si liste (array) 
 + 
 +<​code>​ 
 +public float speed; 
 + 
 +public Sprite[] images; 
 + 
 + 
 +[SerializeField] 
 +private Text scoreText;​ 
 +     
 +[SerializeField] 
 +private GameObject[] enemyTypes;​ 
 +</​code>​ 
 + 
 + 
 +=== Instantierea obiectelor ​==
 + 
 +Obiectele se pot instantia folosind functia 
 +<​code>​ 
 +newobj = Instantiate(objTemplate) as ObjType; 
 + 
 +//from pregab - prefab must be in Resources folder 
 +newobj1 = Instantiate(Resources.Load("​enemy"​));​ 
 + 
 +// Instantiate the projectile at the position and rotation of this transform 
 +Rigidbody projectile;​ 
 +Rigidbody clone; 
 +clone = Instantiate(projectile,​ transform.position,​ transform.rotation);​ 
 + 
 +enemyOrc = Instantiate(Orc) as Enemy; 
 +</​code>​ 
 + 
 +=== Transformari === 
 + 
 +Transformarile unui obiect se pot accesa prin atributul `transform` (https://​docs.unity3d.com/​ScriptReference/​Transform.html) 
 + 
 +<​code>​ 
 +Vector3 objectPosition = GameObject.transform.position;​ 
 + 
 +GameObject.transform.position = new Vector3(posX,​ posY, posZ); 
 + 
 +transform.Translate(Vector3.up * Time.deltaTime,​ Space.World);​ 
 + 
 +transform.Rotate(Vector3.up * Time.deltaTime,​ Space.World);​ 
 +</​code>​ 
 + 
 +=== Random === 
 + 
 +Pentru a genera valori random puteti folosi clasa Random 
 + 
 +<​code>​ 
 + 
 +Random.Range(-10.0f,​ 10.0f) 
 +Random.Range(0,​ 8); 
 + 
 +</​code>​ 
 + 
 +=== Controlul unor obiecte sau componente === 
 + 
 +Afisarea sau ascunderea unui obiect din scena se poate face prin functia de activare 
 + 
 +<​code>​ 
 +myObject.SetActive(false);​ // ascunde 
 +myObject.SetActive(true);​ // arata 
 +</​code>​ 
 + 
 +Similar, se pot controla componentele unui obiect 
 + 
 +<​code>​ 
 + 
 +this.GetComponent<​BoxCollider>​().SetActive(false);​ // dezactivare 
 +this.GetComponent<​SpriteRenderer>​().sprite = image; //setarea unei imagini 
 + 
 +myObject.GetComponent<​Text>​().text = '​123'​ //setarea unui text 
 + 
 +</​code>​ 
 + 
 +De asemenea se pot accesa elemente copil sau parinte 
 +<​code>​ 
 + ​childObject=parentObject.GetChild("​child_name"​);​ 
 + 
 + //​setarea unei componente a elementului copil 
 + ​parentObject.GetChild("​child_name"​).GetComponent<​SpriteRenderer>​().sprite = image;  
 +</​code>​ 
 + 
 +=== Asteptari/​Wait ​ ===  
 + 
 +Daca vreti veti sa introduceti asteptari in rularea unui script/​functii puteti folosi corutine. 
 +Corutinele sunt folosite pentru a porni functii asincrone, care se pot intinde pe mai multe frame-uri, si in care se poate pune pauza (wait). 
 + 
 +<​code>​ 
 +void Start() 
 +
 +    StartCoroutine(Example());​ 
 +
 + 
 +IEnumerator Example() 
 +
 +    print(Time.time);​ 
 +    yield return new WaitForSeconds(5);​ 
 +    print(Time.time);​ 
 +
 +</​code>​ 
 + 
 +=== Evenimente de Input === 
 + 
 +Pentru a putea detecta daca un element a fost apasat, se poate folosi functia OnMouseDown 
 +<​code>​ 
 + 
 +void OnMouseDown() 
 +{         
 +      gameObject.SetActive(false);​ 
 +
 +     
 +</​code>​ 
 + 
 +<note important>​Atentie! Aceasta functie este activa doar in cazul in care utilizatorul apasa cu mouseul peste un elemente de UI sau un Collider</​note>​  
 + 
 +=== Cerinte === 
 + 
 +Realizarea unui joc 2D de memorare 
 + 
 + 
 +  - Configurati scene pentru rulare 2D 
 +  - Adaugati in scena o imagine care reprezinta o tabla de joc (masa) 
 +  - Adaugati doua imagini in scena:  
 +    - unul care sa reprezinte elementul ascuns  
 +    - unul care sa reprezinte elementul afisat 
 +  - Scriptati elementul afisat astfel incat la click sa se ascunda si sa se afiseze cel ascuns 
 +  - Colectati inca 3 imagini pentru elementele afisate 
 +  - Realizati un game controller in care sa scriptati urmatoarele 
 +    - instantierea dinamica a unui grid de 4x4 elemente (primul este deja instantiat) 
 +    - pozitionarea random a tipurilor de elemente (in scena trebuie sa fie perechi de elemente - deci vor fi 8 perechi pozitionate random la fiecare rulare) 
 +    - schimbarea dinamica a imaginii in functie de tip pentru fiecare element din scena 
 +    - mentinerea elementelor selectate curent (se selecteaza o data maxim 1 pereche) 
 +    - rularea asincrona a verificarii daca perechea a fost selectata sau nu corect 
 +    - mentinerea si afisarea unui scor. Scorul creste atunci cand descoperiti doua elemente identice. 
 +  - Adaugati un buton de restart game 
  
  
pjv/laboratoare/02.1539211795.txt.gz · Last modified: 2018/10/14 20:08 (external edit)
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