Questo è un mini tutorial in ambiente Unity 2D con il fine di spiegare semplicemente la gestione delle collisioni. C'è ne saranno diversi dove verranno spiegate le più comuni problematiche riscontrate nello sviluppo di giochi 2D.
La gestione della collisione è alla base di qualsiasi videogioco, in Unity è possibile gestirle in maniera molto rapida ed intuitiva. Supponiamo di avere un oggetto di nome "Box" con una sprite raffigurante una cassa.
A questo oggetto abbiamo applicato, oltre che la sprite, anche un Box Collider 2D e uno script che andremo a creare. L'inserimento del BoxCollider2D rende possibile l'intercetto delle collisioni oltre che la definizione dello spazio delle collisioni tramite "Edit Collider".
Vediamo nel dettaglio come editare lo script per gestire l'intercetto.
Abbiamo sostanzialmente 3 metodi: OnCollisionEnter2D,OnCollisionExit2D,OnCollisionStay che riceveranno come parametro la Collision. Questa contiene le informazioni sulla collisione rispettivamente in entrata, in uscita e nell'atto. Le informazioni sono ad esempio i punti di collisione,la velocità etc...
using UnityEngine; using System.Collections; using UnityEngine.EventSystems; using UnityEngine.UI; public class BoxColliderScript : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Update () { } void OnCollisionEnter2D (Collision collisionInfo) { // points of collision foreach (ContactPoint contact in collisionInfo.contacts) { Debug.DrawRay(contact.point, contact.normal, Color.white); } // velocity //collisionInfo.relativeVelocity } void OnCollisionExit2D (Collision collisionInfo) { // exit collision object print("No longer in contact with " + collisionInfo.transform.name); } void OnCollisionStay(Collision collisionInfo) { // points of collision foreach (ContactPoint contact in collisionInfo.contacts) { Debug.DrawRay(contact.point, contact.normal, Color.white); } } }
E' solo una piccola infarinatura, lasciate un commento per ulteriori domande.