55. Teraz chceme, aby naša gulička mohla tieto kocky zbierať. Potrebujeme teda nastaviť správanie pri kolíziách.
56. Otvoríme si skript PlayerController. Po funkcii FixedUpdate pridáme novú funkciu (http://pastebin.com/p4J718Lf):
void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag ("Pick Up"))
{
other.gameObject.SetActive (false);
}
}
57. Vidíme, že v kóde používame Tag na identifikáciu toho, do čoho gulička narazila. Musíme teda našim kockám nastaviť Tag na Pick Up. V priečinkovej štruktúre projektu vyberieme prefab Pick Up. V okne Inspector vyberieme Tag – Add Tag. Vyberieme tlačítko „+“ a napíšeme Pick Up. Týmto sme vytvorili nový tag.
58. Znovu v priečinkovej štruktúre projektu vyberieme prefab Pick Up. V okne Inspector vyberieme Tag – Pick Up.
59. V tomto prefabe v okne Inspector v časti Box Collider zafajkneme Is Trigger.
60. Vyskúšame hru. Mali by sme úspešne vedieť zbierať kocky pomocou guličky.
61. Hra síce funguje, urobili sme však jednu malú chybu, ktorá by mohla mať dopad na výkon hry. Keďže točíme našu kocku, objekt, ktorý sa správa ako statický objekt (statický objekt by mal byť napríklad taký, ktorý nemá priradený komponent Rigidbody), tak pri každom jeho otočení sú znova prerátavané všetky statické objekty s collidermi v scéne.
62. Nášmu prefabu pridáme komponent Rigidbody. Vpravo v Inspectore klikneme dole na Add Component – Physics – Rigidbody.
63. Spustíme hru. Vidíme, že všetky kocky spadli cez zem. Chyba je v tom, že hoci máme nastavené v Rigidbody správanie podľa gravitácie, tak v Collideri máme nastavené, že tento objekt je Trigger.
64. V prefabe v komponente Rigidbody zafajkneme možnosť Is Kinematic.
65. Spustíme hru a všetko by malo fungovať.
No Comments