示例#1
0
    void OnCollisionEnter(Collision collision)
    {
        var normal = collision.GetContact(0).normal;

        if (Time.time > _canExplodeTime)
        {
            if (collision.gameObject.layer == 11)
            {
                _canExplodeTime = Time.time + _explosionLimitDuration;
                _explosionsObject.TriggerExplosion(this.transform.position);
                _rigidbody.AddForce(normal * 100f, ForceMode.Impulse);
            }
            else if (collision.gameObject.layer == LayerMask.NameToLayer("Destructibles") ||
                     collision.gameObject.layer == LayerMask.NameToLayer("Ground"))
            {
                _canExplodeTime = Time.time + _explosionLimitDuration;
                _explosionsObject.TriggerExplosion(this.transform.position);
            }
        }
        else if (collision.gameObject.layer == 31)
        {
            _rigidbody.AddForce(new Vector3(0f, -5f, 0f), ForceMode.Impulse);
        }
        if (_rigidbody.velocity.sqrMagnitude < 2f)
        {
            normal.y += 0.5f;
            _rigidbody.AddForce(normal * 10f, ForceMode.Impulse);
        }
    }