Пример #1
0
        private void FixedUpdate()
        {
            if (NetGame.isClient || ReplayRecorder.isPlaying)
            {
                if (joint != null)
                {
                    Object.Destroy(joint);
                }
                return;
            }
            if (joint == null)
            {
                CreateJoint();
            }
            float num = parameters.maxSpeed * input.value;

            if (currentSpeed < num)
            {
                if (parameters.accelerationTime > 0f)
                {
                    currentSpeed += parameters.maxSpeed * (Time.fixedDeltaTime / parameters.accelerationTime);
                    currentSpeed  = Mathf.Min(currentSpeed, parameters.maxSpeed);
                }
                else
                {
                    currentSpeed = num;
                }
            }
            if (currentSpeed > num)
            {
                if (parameters.decelerationTime > 0f)
                {
                    currentSpeed -= parameters.maxSpeed * (Time.fixedDeltaTime / parameters.decelerationTime);
                    currentSpeed  = Mathf.Max(currentSpeed, 0f - parameters.maxSpeed);
                }
                else
                {
                    currentSpeed = num;
                }
            }
            if (num == 0f && Mathf.Abs(currentSpeed) < 0.05f)
            {
                currentSpeed = 0f;
            }
            Vector3 a         = base.transform.forward * currentSpeed;
            Vector3 projected = Vector3.zero;
            Vector3 position  = base.transform.position;

            current = Vector3.Lerp(current, position, (position - current).magnitude);
            if (Rail.Project(current + a * Time.fixedDeltaTime, ref projected, ref currentRail, ref currentSegment))
            {
                current = projected;
                joint.connectedAnchor = current;
            }
            else if (!seendebugstring1 && showDebug)
            {
                Debug.Log(base.name + "No track?");
                seendebugstring1 = true;
            }
        }