This shows you the differences between two versions of the page.
pjv:laboratoare:2022:02 [2022/10/19 12:19] alexandru.gradinaru |
pjv:laboratoare:2022:02 [2022/11/09 11:41] (current) alexandru.gradinaru |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== Animatii si interactiuni ===== | + | ===== Programarea animatiilor ===== |
==== Cerinte ===== | ==== Cerinte ===== | ||
<note important>Puteti porni de la scenele create in Lab 1</note> | <note important>Puteti porni de la scenele create in Lab 1</note> | ||
+ | |||
+ | <note tip>Resurse folosite: | ||
+ | * [[https://assetstore.unity.com/packages/3d/environments/fantasy/fantasy-forest-environment-free-demo-35361|Fantasy Forest Environment - Free Demo]] | ||
+ | </note> | ||
Realizati o scena de joc similara cu un joc de Duck Hunt 3D | Realizati o scena de joc similara cu un joc de Duck Hunt 3D | ||
Line 10: | Line 14: | ||
- un teren simplu si ceva vegetatie | - un teren simplu si ceva vegetatie | ||
- Playerul: | - Playerul: | ||
- | - este reprezentat de o camera statica in scena | + | - este reprezentat de o camera statica in scena (e suficient sa aveti doar camera, nu exista miscare din partea jucatorului) |
- are posiblitatea de a trage inspre inamici in 2 moduri: | - are posiblitatea de a trage inspre inamici in 2 moduri: | ||
- left click: lanseaza un proiectil fizic care mere inspre directia une a fost apasat click (cu anumite reguli: fie are o durata de viata, fie pana a nimerit ceva, fie adaugati o forta combinata cu reguli de distrugere etc.) | - left click: lanseaza un proiectil fizic care mere inspre directia une a fost apasat click (cu anumite reguli: fie are o durata de viata, fie pana a nimerit ceva, fie adaugati o forta combinata cu reguli de distrugere etc.) | ||
Line 267: | Line 271: | ||
<code c#> | <code c#> | ||
+ | |||
+ | |||
+ | |||
+ | |||
RaycastHit hit; | RaycastHit hit; | ||
Line 283: | Line 291: | ||
} | } | ||
} | } | ||
+ | |||
</code> | </code> | ||
+ | In mod specific, pentru a prelua punctul in care s-a facut click cu mouse-ul, exista metode Unity dedicate | ||
+ | <code c#> | ||
+ | |||
+ | |||
+ | if(Input.GetMouseButtonDown(0)) //la apasarea click stanga | ||
+ | { | ||
+ | Ray mouseClickRay = camera.ScreenPointToRay(Input.mousePosition); //creaza o raza printr-un punct de pe ecran | ||
+ | RaycastHit hit; | ||
+ | | ||
+ | if(Physics.Raycast(mouseClickRay, out hit)) | ||
+ | { | ||
+ | // | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </code> | ||
Asa cum se observa si in exemplul de mai sus, Racycast-urile se pot folosi in multe moduri. Cateva exemple: | Asa cum se observa si in exemplul de mai sus, Racycast-urile se pot folosi in multe moduri. Cateva exemple: | ||
* aplicarea unei coliziuni | * aplicarea unei coliziuni | ||
Line 382: | Line 407: | ||
<code> | <code> | ||
| | ||
+ | Update() { | ||
+ | animation.Play("Die"); | ||
+ | waitForAnimation(); | ||
+ | } | ||
+ | | ||
+ | IEnumerator waitForAnimation() { | ||
yield WaitForSeconds (animation["CrouchRun"].length); | yield WaitForSeconds (animation["CrouchRun"].length); | ||
| | ||
Line 387: | Line 418: | ||
| | ||
dead = Instantiate( deadNew, dead.position, dead.transform.rotation); | dead = Instantiate( deadNew, dead.position, dead.transform.rotation); | ||
+ | } | ||
</code> | </code> | ||