internal void RaiseOnCollisionCallbacks() { var collisionEventsNum = CoreObject.GetCollisionEventsNum(); Collisions2DInfo.Clear(); for (int index = 0; index < collisionEventsNum; index++) { var collisionEvent = CoreObject.GetCollisionEvent(index); var collision = collisionEvent.GetCollision(); var colliderA = asd.Particular.Dictionary.Get(Layer.CollidersMap, collision.GetColliderA().GetCreationId()); var colliderB = asd.Particular.Dictionary.Get(Layer.CollidersMap, collision.GetColliderB().GetCreationId()); Collider2D myCollider = null; Collider2D theirCollider = null; if (myColliders.Contains(colliderA)) { myCollider = colliderA; theirCollider = colliderB; } else { myCollider = colliderB; theirCollider = colliderA; } var collisionType = collisionEvent.GetCollisionType(); var collisionInfo = new Collision2DInfo(myCollider, theirCollider, (CollisionType)collisionType); if (collisionType == swig.CollisionType.Enter) { OnCollisionEnter(collisionInfo); } else if (collisionType == swig.CollisionType.Stay) { OnCollisionStay(collisionInfo); } else if (collisionType == swig.CollisionType.Exit) { OnCollisionExit(collisionInfo); } Collisions2DInfo.Add(collisionInfo); } }
/// <summary> /// オーバーライドして、この2Dオブジェクトが別の2Dオブジェクトのコライダと衝突終了した際の処理を記述できる。 /// </summary> /// <param name="collisionInfo">衝突に関する情報</param> protected virtual void OnCollisionExit(Collision2DInfo collisionInfo) { }
/// <summary> /// オーバーライドして、この2Dオブジェクトが別の2Dオブジェクトのコライダと衝突が継続している際の処理を記述できる。 /// </summary> /// <param name="collisionInfo">衝突に関する情報</param> protected virtual void OnCollisionStay(Collision2DInfo collisionInfo) { }