Пример #1
0
 void OnSideCollisionDelegate(SmartCollision2D collision, GameObject collidedObject)
 {
     if (collidedObject.tag == "Ball")
     {
         Debug.Log("collidedObject:" + collidedObject.name);
     }
 }
Пример #2
0
    void OnSmartCollisionStay2D(SmartCollision2D collision)
    {
        //NOTE: dot product will be 1 if collision in perpendicular and opposite facing direction and 0 if horizontal and < 0 if perpendicular but in the same direction as facing direction
        float dot = Vector3.Dot(transform.up, -collision.relativeVelocity);

        if (dot > 0)
        {
            m_fixedUpdatesToRemoveActivator = 4;
            m_rigidBody    = collision.rigidbody;
            m_rigidBody2D  = collision.rigidbody2D;
            m_platformCtrl = collision.gameObject.GetComponent <PlatformCharacterController>();
            if (!m_isActivated)
            {
                m_isActivated = true;
                Open.SetActive(!m_isActivated);
                Close.SetActive(m_isActivated);
                m_activationTime = ActivationTime;
                m_activator      = collision.gameObject;
                m_activatorPos   = new Vector2(0f, float.MaxValue);
            }
        }
    }
Пример #3
0
    private void OnSideCollision(SmartCollision2D collision, GameObject collidedObject)
    {
        if (collision.impulse.y != 0)
        {
            m_slopeAngle = Vector2.Angle(collision.contacts[0].normal, Vector2.right) - 90f;
        }

        Vector3 velocity = m_platformPhysics.Velocity;

        // Reset vertical speed on opposite vertical collision
        if (collision.impulse.y > 0f && velocity.y < 0f ||
            collision.impulse.y < 0f && velocity.y > 0f)
        {
            velocity.y = 0f;
        }

        // Reset horizontal speed on opposite horizontal collision
        if (collision.impulse.x > 0f && velocity.x < 0f ||
            collision.impulse.x < 0f && velocity.x > 0f)
        {
            velocity.x = 0f;
        }
        m_platformPhysics.Velocity = velocity;
    }