Ejemplo n.º 1
0
        protected void Tumble(ContactPoint contactPoint, SurfaceResponse surfaceResponse)
        {
            if (Time.time < _nextTumbleTime)
            {
                return;
            }
            if (surfaceResponse == null)
            {
                return;
            }

            // Raycast to contact point
            RaycastHit raycastHit = RaycastContact(contactPoint);

            // Determine if there is a response effect
            SurfaceResponse.ResponseEffect responseEffect = surfaceResponse.GetResponseEffect(raycastHit, _rigidbody.velocity.magnitude);
            if (responseEffect == null)
            {
                return;
            }
            // Create effect, apply dynamics
            CreateEffect(responseEffect.castable, raycastHit);
            ApplyResponseDynamics(responseEffect, raycastHit);
            // Define the next time that the tumblable is allowed to tumble
            SetNextTumbleTime();
        }
Ejemplo n.º 2
0
        protected SurfaceResponse.ResponseEffect GetResponseEffect(RaycastHit raycastHit, SurfaceResponse surfaceResponse)
        {
            // Determine if there is a surface response
            if (surfaceResponse == null)
            {
                return(null);
            }

            // Determine if there is a response effect
            SurfaceResponse.ResponseEffect responseEffect = surfaceResponse.GetResponseEffect(raycastHit, _relativeImpactVelocity.magnitude);
            if (responseEffect == null)
            {
                return(null);
            }
            return(responseEffect);
        }