64 lines
1.7 KiB
C#
64 lines
1.7 KiB
C#
|
// Copyright (c) Pixel Crushers. All rights reserved.
|
|||
|
|
|||
|
using UnityEngine;
|
|||
|
|
|||
|
namespace PixelCrushers
|
|||
|
{
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Invokes events on collision enter and exit.
|
|||
|
/// </summary>
|
|||
|
[AddComponentMenu("")] // Use wrapper.
|
|||
|
public class CollisionEvent : TagMaskEvent
|
|||
|
{
|
|||
|
|
|||
|
[SerializeField]
|
|||
|
private GameObjectUnityEvent m_onCollisionEnter = new GameObjectUnityEvent();
|
|||
|
|
|||
|
[SerializeField]
|
|||
|
private GameObjectUnityEvent m_onCollisionExit = new GameObjectUnityEvent();
|
|||
|
|
|||
|
public GameObjectUnityEvent onCollisionEnter
|
|||
|
{
|
|||
|
get { return m_onCollisionEnter; }
|
|||
|
set { m_onCollisionEnter = value; }
|
|||
|
}
|
|||
|
|
|||
|
public GameObjectUnityEvent onCollisionExit
|
|||
|
{
|
|||
|
get { return m_onCollisionExit; }
|
|||
|
set { m_onCollisionExit = value; }
|
|||
|
}
|
|||
|
|
|||
|
protected virtual void OnCollisionEnter(Collision collision)
|
|||
|
{
|
|||
|
if (!IsInTagMask(collision.gameObject.tag)) return;
|
|||
|
onCollisionEnter.Invoke(collision.gameObject);
|
|||
|
}
|
|||
|
|
|||
|
protected virtual void OnCollisionExit(Collision collision)
|
|||
|
{
|
|||
|
if (!IsInTagMask(collision.gameObject.tag)) return;
|
|||
|
onCollisionExit.Invoke(collision.gameObject);
|
|||
|
}
|
|||
|
|
|||
|
#if USE_PHYSICS2D || !UNITY_2018_1_OR_NEWER
|
|||
|
|
|||
|
protected virtual void OnCollisionEnter2D(Collision2D collision)
|
|||
|
{
|
|||
|
if (!IsInTagMask(collision.gameObject.tag)) return;
|
|||
|
onCollisionEnter.Invoke(collision.gameObject);
|
|||
|
}
|
|||
|
|
|||
|
protected virtual void OnCollisionExit2D(Collision2D collision)
|
|||
|
{
|
|||
|
if (!IsInTagMask(collision.gameObject.tag)) return;
|
|||
|
onCollisionExit.Invoke(collision.gameObject);
|
|||
|
}
|
|||
|
|
|||
|
#endif
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
}
|