23 private float currentPos;
24 private float slideVel;
26 public float slideAccel = 5.25f;
27 public float slideFriction = 6f;
28 public float deadZone = 0.55f;
29 public float clampDistance = 300.0f;
30 public float bounce = 0.5f;
35 private float GetAxis(Vector3 v)
39 case EAxis.X:
return v.x;
40 case EAxis.Y:
return v.y;
41 case EAxis.Z:
return v.z;
46 private Vector3 SetAxis(Vector3 v,
float f)
50 case EAxis.X: v.x = f;
break;
51 case EAxis.Y: v.y = f;
break;
52 case EAxis.Z: v.z = f;
break;
60 private void LateUpdate()
62 float targetP = GetAxis(TargetPoint);
64 float dt = Time.deltaTime;
65 float delta = targetP - currentPos;
68 if (Mathf.Abs(delta) > deadZone * deadZone)
70 slideVel += slideAccel * Mathf.Sign(delta) * dt;
74 slideVel -= slideVel * slideFriction * dt;
77 currentPos += slideVel * dt;
80 if (Mathf.Abs(currentPos) >= clampDistance)
83 currentPos = clampDistance * Mathf.Sign(currentPos);
87 transform.localPosition = SetAxis(transform.localPosition, currentPos);