public override void ReactToPassenger(Vector3 velocity, PassengerMovement passenger) { bool squisch = false; Vector3 hitSourcePosition = transform.position; if ((!passenger.standingOnPlatform && velocity.x < 0 && passengerDictionary[passenger.transform].IsLeft()) || (!passenger.standingOnPlatform && velocity.x > 0 && passengerDictionary[passenger.transform].IsRight())) { // sideways squisch! squisch = true; hitSourcePosition = new Vector3(transform.position.x, passenger.transform.position.y, transform.position.z); } if ((passenger.standingOnPlatform && velocity.y > 0 && passengerDictionary[passenger.transform].IsBelow() && passengerDictionary[passenger.transform].IsAbove()) || (!passenger.standingOnPlatform && passengerDictionary[passenger.transform].IsBelow() && velocity.y < 0)) { // vertical squisch! squisch = true; hitSourcePosition = new Vector3(passenger.transform.position.x, transform.position.y, transform.position.z); } if (squisch) { HurtBox hurtBox = passenger.transform.GetComponent <HurtBox>(); if (!hurtBox) { hurtBox = passenger.transform.GetComponentInChildren <HurtBox>(); } if (hurtBox) { hurtBox.ReceiveHit(true, 100, HitBox.DAMAGE_TYPE.SQUISH, hitSourcePosition); // create squish effect on platform Vector3 positionEffectPlatform = BoundUtils.GetPositionOnBounds(velocity, passenger.transform.position, myCollider.bounds, 26); InstantiateEffect(squishEffect, positionEffectPlatform, BoundUtils.GetEffectRotation(velocity, true), transform); // create squish effect on ground BoxCollider2D collider2D = passenger.transform.GetComponent <BoxCollider2D>(); if (collider2D) { Vector3 positionEffectGround = BoundUtils.GetPositionOnBounds(velocity, positionEffectPlatform, collider2D.bounds); InstantiateEffect(squishEffect, positionEffectGround, BoundUtils.GetEffectRotation(velocity, false)); } } } }