コード例 #1
0
        public void OnCollisionEnter(Collision collision)
        {
            if (!base.enabled)
            {
                return;
            }
            if (collision.gameObject.layer == waterLayer)
            {
                if (collision.contacts.Length > 0 && mutableData.WaterSplash != null && pilotBody != null && Time.time - lastSplashTime >= mutableData.SplashCooldown)
                {
                    GameObject gameObject = Object.Instantiate(mutableData.WaterSplash);
                    if (gameObject != null)
                    {
                        Vector3 position = pilotBody.transform.position;
                        position.y = collision.contacts[0].point.y + mutableData.SplashOffset;
                        gameObject.transform.position = position;
                        CameraCullingMaskHelper.SetLayerIncludingChildren(gameObject.transform, LayerMask.LayerToName(base.gameObject.layer));
                    }
                    lastSplashTime = Time.time;
                }
                transitionToWater();
            }
            if (LocomotionUtils.GetAnimatorStateInfo(animator).tagHash == AnimationHashes.Tags.ReactingToHit || !(collision.impulse.sqrMagnitude >= minMagnitudeForBumpSq) || !(Mathf.Abs(collision.impulse.y) < 0.707f))
            {
                return;
            }
            Vector3 vector = thisTransform.position - collision.contacts[0].point;

            vector.y = 0f;
            if (vector.x != 0f && vector.z != 0f)
            {
                Vector3 forward = thisTransform.forward;
                forward.y = 0f;
                if (forward.x != 0f && forward.z != 0f)
                {
                    float num = LocomotionUtils.SignedAngle(forward.normalized, vector.normalized);
                    num = ((num < -157.5f) ? 180f : ((num < -112.5f) ? (-135f) : ((num < -67.5f) ? (-90f) : ((num < -22.5f) ? (-45f) : ((num < 22.5f) ? 0f : ((num < 67.5f) ? 45f : ((num < 112.5f) ? 90f : ((!(num < 157.5f)) ? 180f : 135f))))))));
                    animator.SetFloat(AnimationHashes.Params.Angle, num);
                    animator.SetTrigger(AnimationHashes.Params.Bump);
                }
            }
        }