Warning: Cannot modify header information - headers already sent by (output started at /home/lalienoits/www/index.php:47) in /home/lalienoits/www/inc/cookie.php on line 6
a cadenza discontinua
Come se fossi
BLOG

Unity 2D [E1] - Gestire le collisioni

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.


di GuiZ
23/02/2016

Commenta

We'll never share your email with anyone else.