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 a j billentyűkkel lehessen mozgatni a bal és a jobb oldali ütőt!