Unity Εργαστήριο 02 Δημιουργία αντικειμένων κατά το gameplay
Δημιουργούμε – Ένα plane (η «πίστα» μας) – Και δύο αντικείμενα («οι ήρωες») – Empty objects Τα αντικείμενα πρέπει να δημιουργούνται δυναμικά με αριστερό και δεξί κλικ
declarations var hero1 : GameObject; // το πρώτο αντικείμενο var hero2 : GameObject; // το δεύτερο Οι μεταβλητές φαίνονται στον editor
if(Input.GetMouseButtonDown(0)) // 0 is for when the left button is clicked, 1 is for the right Instantiate(hero,transform.position,Quaternion.identity); Δοκιμάστε το για δεξί κλικ και με το δεύτερο αντικείμενο Πού δημιουργείται το αντικείμενο; Πώς θα το κάνω να πέφτει πάνω στην πίστα;
κι άλλα declarations var ray: Ray; var hit: RaycastHit; var gridSpacing = 1.0;
if(Input.GetMouseButtonDown(0)) { ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, hit, 100)) { if (hit.collider.name=="Plane") Instantiate(hero1, hit.point + Vector3(0, 1, 0), Quaternion.identity); } }
if(Input.GetMouseButtonDown(1)) { ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, hit, 100)) { if (hit.collider.name=="Plane") Instantiate(hero2, hit.point + Vector3(0, 1, 0), Quaternion.identity); } }
if (Input.GetMouseButtonDown(1)) { ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, hit, 100)) { if (hit.collider.name=="Plane") Instantiate(hero2, hit.point + Vector3(0, 1, 0), Quaternion.LookRotation(hit.point) * Quaternion.Euler(0, 0, 90)); }
τοποθέτηση σε grid function GetGridPosition (originalPosition : Vector3) { var newx = (Mathf.Round (originalPosition.x / gridSpacing) * gridSpacing); var newz = (Mathf.Round (originalPosition.z / gridSpacing) * gridSpacing); var convertPosition = new Vector3 (newx, (originalPosition.y), newz); return convertPosition; } function Update () { ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, hit, 100)) { Debug.Log ("Hit point: " + hit.point + " Grid Position: " + GetGridPosition (hit.point)); }