Eseménykezelés

Példa

  • Hozzunk létre egy színteret, és rakjunk bele egy objektumot középre!
  • Definiáljuk az alábbi EventManager szkriptet!
public class EventManager : MonoBehaviour
{
    public delegate void ClickAction();
    public static event ClickAction OnClicked;

    void OnGUI()
    {
        if (GUI.Button(new Rect(Screen.width / 2 - 100, 5, 200, 30), "Rotate!"))
        {
            if (OnClicked != null) {
                Debug.Log("Rotate on click!");
                OnClicked();
            }
        }
    }
}
  • Adjuk hozzá a szkriptet a kamerához!
  • Definiáljunk egy Spinner nevű szkriptet a következő adattagokkal és metódusokkal!
public Rigidbody rigidbody;

void Start()
{
    rigidbody = GetComponent<Rigidbody>();
}

void OnEnable()
{
    EventManager.OnClicked += Spin;
}

void OnDisable()
{
    EventManager.OnClicked -= Spin;
}

void Spin()
{
    Debug.Log("Rotate!");
    Vector3 axis = new Vector3(10, 20, 30);
    rb.AddTorque(axis, ForceMode.Force);
}
  • Adjuk hozzá a Spinner szkriptet a kockához!
  • Indítsuk el a színteret és próbáljuk ki!
  • Adjuk meg a forgás nagyságát szerkesztőből állítható paraméterként!

Raycasting

A sugarak használata gyakran hasznos lehet. Rajzoltassunk ki egy sugarat az alábbi kódrésszel!

Vector3 origin = transform.position;
Vector3 direction = transform.forward * 10;
Debug.DrawRay(origin, direction, Color.red);

A sugárral való ütközést a következőképpen lehet vizsgálni:

RaycastHit hit;
...
if (Physics.Raycast(origin, direction, out hit)) {
    Debug.Log(hit);
}

Az eltalált objektum a következőképpen kérdezhető le:

hit.collider.gameObject

Példa

  • Készítsünk egy színteret, amelybe elhelyezünk egy objektumot, amivel célozni szeretnénk!
  • Rajzoltassuk ki, hogy merrefelé célzunk (például zöld színnel)!
  • Oldjuk meg, hogy az egér segítségével lehessen célozni!
  • Helyezzünk a színtérbe objektumokat!
  • Az eltalált objektumoknak változtassuk a színét pirosra!

Speciális bemenetek

Interakciók

Példa

  • Hozzunk létre egy prefab-ot, amely egy érme!
  • Állítsuk be az anyagjellemzőket, és a Time.fixedTime segítségével oldjuk meg, hogy az érme fel-le mozogjon!
  • Hozzunk létre egy zöld síkot, és véletlenszerű pozíciókba helyezzük le az érméket!
  • Hozzunk létre egy piros objektumot, ami a karakterünket reprezentálja!
  • Mozgassuk az objektumot billentyűk és/vagy egér segítségével!
  • Oldjuk meg, hogy az érméket fel lehessen szedni!

Állapotgép modell

Játékokban a jellegzetes viselkedés állapotok:

  • járőrözés (patrolling),
  • bolyongás,
  • gyűjtögetés,
  • támadás,
  • menekülés.

Egyszerű NPC készítése

  • Non Player Character

Példa

  • Adjunk a színterünkhöz egy karaktert (amely az NPC lesz)!
  • Oldjuk, hogy véletlenszerűen bolyongjon egy síkon!
  • Jelöljünk ki számára célokat, melyekhez bizonyos idő eltelte után odamegy!
  • Jelezzük egy objektum színével vagy pozíciójával, hogy éppen milyen állapotban van!