Differences

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

Link to this comparison view

pjv:laboratoare:03 [2018/10/24 13:49]
alexandru.gradinaru
pjv:laboratoare:03 [2019/10/16 16:43] (current)
alexandru.gradinaru
Line 62: Line 62:
 === Bone-based === === Bone-based ===
  
-Incepand cu versiunea din 2017, Unity are suport si pentru animatii Bone-based pentru 2D.+Incepand cu versiunea din 2018 (2018.2.0f2), Unity are suport si pentru animatii Bone-based pentru 2D.
  
 Puteti folosi imaginea de mai jos ca exemplu: {{ :​pjv:​laboratoare:​plunkahgreen.png?​direct&​200 |}} Puteti folosi imaginea de mai jos ca exemplu: {{ :​pjv:​laboratoare:​plunkahgreen.png?​direct&​200 |}}
Line 164: Line 164:
 </​code>​ </​code>​
  
 +=== Animatie fundal ===
  
 +Petru a anima fundalul unui joc 2D, putem altera pozitia texturii. Astfel, trebuie sa definim un material cu o textura, si sa o aplicam pe un obiect (de obicei un quad). Dupa care avem la dispozitie componenta de Render in care putem accesa materialul si implicit texturile, la care putem adauga un offset, in functie de pozitia caracterului,​ sau o miscare in timp etc.
 +
 +<​code>​
 +   ​renderer = GetComponent<​Renderer>​();​
 +   
 +   ​renderer.material.SetTextureOffset("​_MainTex",​ offset);
 +   
 +   // "​_MainTex"​ is the main diffuse texture. This can also be accessed via mainTextureOffset property. ​
 +   // "​_BumpMap"​ is the normal map. 
 +   // "​_Cube"​ is the reflection cubemap.
 +</​code>​
 +
 +Pentru a functiona corect, textura pe care o folositi trebuie sa fie setata pe ''​Repeat''​
 +{{ :​pjv:​laboratoare:​2018-10-24_2_li.jpg?​direct&​300 |}}
 +
 +=== Animatii proiectile / tragere ===
 +
 +Pentru animatia de tragere, se foloseste in general o stare pentru a actualiza animatia jucatorului,​ iar proiectilul se genereaza in felul urmator (recomandat):  ​
 +  * Pe arma (care se afla in scena) se adauga un script care gestioneaza generarea si directia proiectilelor
 +  * Plecand din locatia armei, se instantiaza (folosind functia Instantiate,​ studiata deja) un proiectil (prefab de regula, nu trebuie sa existe deja in scena, folosind pozitia armei). Proiectilul are atasat un script ce contine detalii de viteza, damage etc
 +  * Proiectilul are o miscare de translatie continua pe o directie, pana la atingerea unei limite sau a unui collider cand produce un trigger
 +
 +=== Animatii si instantiere in scena ====
 +
 +Pentru instantiere se foloseste functia ''​Instantiate(gameobject,​ position)''​.
 +Pentru a genera continut doar in spatiu vizil pe ecran, se pot defini obiecte care fixeaza acest cadru, si generat random apoi in acest interval.
 +Obiectele generate pot fi scriptate astfel incat sa aiba animatii si miscari continui.
 +
 +=== Miscarea personajului ===
 +
 +Miscarea personajului se poate face folosind o componenta de RigidBody2D si aplicand forte sau miscari.
 +<​code>​
 +rb = GetComponent<​Rigidbody2D>​();​
 +float moveHorizontal = Input.GetAxis ("​Horizontal"​);​
 +float moveVertical = Input.GetAxis ("​Vertical"​);​
 +
 +Vector3 movement = new Vector3 (moveHorizontal,​ 0.0f, moveVertical);​
 +
 +rb.AddForce (movement * speed);
 +
 +rb.MovePosition (transform.position + offset * Time.deltaTime);​
 +</​code>​
 +
 +=== Coliziuni ===
 +
 +Pentru detectia coliziunilor se poate folosi un collider2D. Pentru o interactiune usoara, se poate genera un Trigger la evenimentul de coliziune bifand caseta de ''​Trigger''​ din componenta. Dupa care se poate prelua evenimentul si obiectul cu care se face coliziunea.
 +<​code>​
 +void OnTriggerEnter(Collider otherObject) {
 +
 + score += 10;
 + scoreText.text = score.ToString();​
 + Destroy(otherObject.gameObject);​
 +
 + }
 +</​code>​
 +
 +
 +=== Cerinte ===
 +
 +Realizarea unui joc 2D scroller
 +
 +  - Configurati scene pentru rulare 2D
 +  - Adaugati in scena o imagine care reprezinta fundalul de joc (animat)
 +  - Adaugati un personaj animat in scena: ​
 +    - se poate controla de la tastatura ​
 +    - trage cu proiectile in inamici
 +    - animat in mai multe stari (minim 3)
 +    - are un scor care creste la distrugerea inamicilor
 +  - Adaugati minim doua tipuri de inamici animati prin tehnici diferite
 +    - la coliziune cu proiectilul jucatorului se distrug
 +    - la coliziune cu jucatorul se distrug
 +    - sunt generati dinamic, la pozitii aleatoare si se deplaseaza incontinuu
pjv/laboratoare/03.1540378147.txt.gz ยท Last modified: 2018/10/24 13:49 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