Szkriptek írása
Példa:
- Hozzunk létre egy új objektumot!
- Hozzunk létre egy szkriptet a projekten belül!
- Rendeljük hozzá az objektumhoz a szkriptet.
- Adjunk hozzá egy kiíratást az objektum inicializálásához!
Debug.Log("Something here!");
- Állítsuk át a kirajzoláshoz használt színt pirosra!
GetComponent<Renderer>().material.color = Color.red;
A GameObject
osztály
A MonoBehaviour
osztály
Start();
Update();
Debug.Log();
A publikus változók látszanak az Inspector-ban.
Bemenetek kezelése
A billentyűeseményeket a következőképpen tudjuk ellenőrízni:
Input.GetKeyDown(KeyCode.A)
Input.GetKeyUp(KeyCode.A)
Az egérhez hasonlóképpen férhetünk hozzá, például a kurzor pozíciójának lekérdezése:
Vector3 mousePos = Input.mousePosition;
print("(" + mousePos.x + ", " + mousePos.y);
Komponens tulajdonságok és műveletek
Objektum elrejtése, láthatóvá tétele
if (Input.GetKeyUp(KeyCode.Space))
{
GetComponent<Renderer>().enabled = !GetComponent<Renderer>().enabled;
}
- Oldjuk meg, hogy ne kelljen minden alkalommal lekérdezni a renderer objektumot!
Pozíciók kezelése
Vizsgáljuk meg egy szabadon eső test pozícióját, és állítsuk vissza!
Debug.Log(transform.position.y);
if (transform.position.y < 0) {
transform.position = new Vector3(0, 10, 0);
}
Készítsünk egy színteret, amelyben egy objektumot lehet a WASD
billentyűk segítségével mozgatni!
- Kiindulásként tekintsük a következő kódpéldát:
if (Input.GetKeyDown(KeyCode.A)) {
transform.position += new Vector3(10 * Time.deltaTime, 0, 0);
}
- Mi ezzel a probléma? Hogyan lehetne megoldani a folyamatos mozgást?
- Hasonlóképpen oldjuk meg a kamera mozgatását!
Ütközésdetektálás
Készítsünk egy pattogó labdát!
- Adjunk a színtérhez egy síkot (pontosabban négyzetet) és egy gömböt!
- Állítsuk be, hogy a gömbre hasson a fizika, ellenőrízzük, hogy leesik a sík lapra!
- Hozzunk létre egy Physic Material elemet!
- Állítsuk be a Friction értékeket 0-ra, a Bounciness értékét pedig 1-re!
- Adjuk hozzá a material-t a gömb objektumunkhoz!
- Vizsgáljuk meg, hogy valóban pattog-e!
Definiáljuk felül az OnCollisionEnter
metódust, például:
void OnCollisionEnter(Collision collision)
{
print("Collide!");
}
Szilárdtest fizikához köthető műveletek
Erőhatás megadása:
if (Input.GetKeyDown(KeyCode.A)) {
Vector3 power = new Vector3(0, 10, 0);
GetComponent<Rigidbody>().AddForce(power, ForceMode.Impulse);
}
Prefab-ok használata
- Hozzunk létre egy új prefab-ot!
- A prefab-hoz adjunk hozzá egy 3D-s modellt, és gravitációt!
- Adjunk a színtérhez egy új
GameObject
-et! - A
GameObject
-hez adjunk hozzá egy szkriptet! - A szkripthez adjuk hozzá a létrehozott Prefab-ot!
public GameObject myPrefab;
// ...
if (Input.GetKeyDown(KeyCode.A))
{
Instantiate(myPrefab, Vector3.zero, Quaternion.identity);
}
Flipper
Implementáljunk egy egyszerű flipper alkalmazást!
- Készítsünk egy döntött táblát (például téglatestekből)!
- Adjunk meg egy golyót fémes anyagjellemzőkkel!
- Állítsuk be rá a gravitációt, és ellenőrízzük, hogy valóban legurul-e táblán!
- Adjuk meg, hogy a szóköz megnyomására visszakerüljön a labda a kezdőpozícióba!
- Készítsünk ütőket (például hengerek segítségével)!
- Állítsuk be, hogy az
f
és aj
billentyűkkel lehessen mozgatni a bal és a jobb oldali ütőt!