Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Unity 3D alapok + gyakorlás.

Hasonló előadás


Az előadások a következő témára: "Unity 3D alapok + gyakorlás."— Előadás másolata:

1 Unity 3D alapok + gyakorlás

2 Transzformációk Megnéztük a 2D projektek alapjait
Ami fontos a 3D-re áttérésnél: 3D transzformációk Fényelés Anyagjellemzők 3D animációk ….

3 Új 3D projekt Chandelier

4 Ismerkedjünk a felülettel
Gyakoroljuk kicsit 3D navigálás a térben Adjunk hozzá egy objektumot Pl gameObject menu-3Dobject-Sphere Járjuk körül (néha fokuszáljunk rá : F gomb) Használjuk a transzformációs eszközöket (figyelhetjük közben az inspectort)

5 Transzformációk tengelyei, középpontja

6 Transzformációk Inspector nézetben legfelső komponens
A transzformációk a következő sorrendben futnak le: Scale Rotate Translate A sorrend fontos

7 Transzformáció gyakorlás
Bontsuk fel a transzformációkat transzformáció hierarchiával Legyen külön gameobject az eltoláshoz és a forgatáshoz (scale-t egyenlőre hagyjuk) Rakjuk őket hierarchiába, és helyezzünk el egy objektumot az alsó szintre (pl. teapot asset) Legyen a forgatás x:10,y:20,z:30 Legyen az eltolás: x:5,y:0,z:0 Csináljunk két különböző sorrendű váltpzatot (Köv. dia)

8 Különböző sorrendű transzformációk

9 Különböző sorrendű transzformációk
Ugyanezt megcsinálhatjuk skálázással és eltolással Forgatással és skálázással

10 Feladat: Naprendszer Assetek letölthetők Cél:
Minden égitest függetlenül méretezhető legyen Adjunk hozzá Föld bolygót, aki Kering a nap körül (körpályán) Forog a saját tengelye körül Adjunk a Föld-höz holdat, aki Kering a föld körül, de a föld saját tengely körüli forgásától független sebességgel

11 Forgató szkript Jól jön még egy egyszerű szkript: using UnityEngine;
using System.Collections; public class RotateY : MonoBehaviour { public float speed; void Update () { float dt = Time.deltaTime; transform.Rotate(new Vector3(0,dt*speed,0)); }

12

13

14 Próbálgassunk futtatgassunk …

15 Kamera mozgatása Egyszerű target kamera mozgatás
Van egy target, mindig ra nézünk A kamera a target körül forog Egérmozgásra forog a kamera Egér görgőre közelebb/távolabb megy (zoom) A kameraához adjunk új szkriptet:TargetCamera.cs

16 TargetCamera.cs public class TargetCamera : MonoBehaviour { public float rotateSpeed = 10.0f; public float zoomSpeed; public GameObject target; Transform targetTransform; Transform cameraTransform; float polar = 0; float azimuth = 0; float r = 10; void Start () { targetTransform = target.transform; cameraTransform = gameObject.transform; } …

17 TargetCamera.cs void Update () { float dt = Time.deltaTime; if(Input.GetMouseButton(0)) { azimuth += Input.GetAxis("Mouse X") * rotateSpeed; polar -= Input.GetAxis("Mouse Y") * rotateSpeed; } r -= Input.GetAxis ("Mouse ScrollWheel") * dt * zoomSpeed; Vector3 camPos = targetTransform.position; camPos += Quaternion.Euler(0,azimuth,0) * Quaternion.Euler(0,0,polar) * (Vector3.right * r); cameraTransform.position = camPos; cameraTransform.LookAt(targetTransform, new Vector3(0,1,0)); } }

18 Próba …

19 Föld döntése Nem pontos a föld saját tengelye szerinti forgása
A föld tengelye döntött, de ez az irány a naprendszer koordinátatengelyihez képes állandó Ilyet nem tudunk egyszerű hierarchiával megalkotni A föld nap körüli forgását végző transzformáció ezt a bedöntést is forgatná (nem lenne nyár az egyik féltekén ) Ki kellene ütnünk ezt az automatikus forgatást Szkriptet írunk, a föld objektumon kapcsoljuk ki az eddigi forgató szkriptet és adjunk hozzá egy újat:

20 using System.Collections; public class EarthTilt : MonoBehaviour {
using UnityEngine; using System.Collections; public class EarthTilt : MonoBehaviour { public GameObject Sun; public float rotateSpeed; void Update () { Transform sunT = Sun.transform; Transform earthT = gameObject.transform; earthT.rotation = sunT.rotation * Quaternion.Euler(0, 0, 23); transform.Rotate(new Vector3(0, Time.time * rotateSpeed, 0), Space.Self); }

21 Futtatás Be kell kötni a SolarSys nevű objektumot a script bemenetére, és beállítani a forgási sebességet (365)

22 Free kamera Nincs target Iránybillentyűkkel előre/hátra mozog
Egérrel forog, saját tengelye körül

23 Kamera mozgatás szkript
using UnityEngine; using System.Collections; public class FreeCamera : MonoBehaviour { void Update () { float moveSpeed = 10; float dt = Time.deltaTime; Vector3 move = new Vector3(0,0,0); if (Input.GetAxis ("Horizontal") < 0) { move = move + new Vector3(-1,0,0); } else if(Input.GetAxis ("Horizontal") > 0) { move = move + new Vector3(1,0,0); } if (Input.GetAxis ("Vertical") > 0) { move = move + new Vector3(0,0,1); } else if (Input.GetAxis ("Vertical") < 0) { move = move + new Vector3(0,0,-1); } move.Normalize(); transform.Translate(move * dt * moveSpeed); }

24 Kamera forgás void Update() { … float rotateSpeed = 2.0f; transform.RotateAround(Vector3.up, dt *Input.GetAxis ("Mouse X") * rotateSpeed); Vector3 rightVector = transform.rotation * Vector3.right; transform.RotateAround(rightVector,-dt * Input.GetAxis ("Mouse Y") * rotateSpeed); //ez nem jó! //transform.Rotate(new Vector3(0,dt *Input.GetAxis ("Mouse X") * rotateSpeed,0)); //transform.Rotate(new Vector3(-dt *Input.GetAxis ("Mouse Y") * rotateSpeed,0,0)); }

25 Vége


Letölteni ppt "Unity 3D alapok + gyakorlás."

Hasonló előadás


Google Hirdetések