Clamp01 does not work?
Hello,
I am making a trigger for a door and I Lerp between start and target positions depending on the ratio value. I want to clamp this ratio between 0 and 1 since the Vector3.Lerp method requires this.
using UnityEngine;
using System.Collections;
public class Door : MonoBehaviour {
public bool activated;
private Vector3 startPos;
public Vector3 LocalDestination;
private Vector3 WorldDestination;
public float speed;
[Range(0f,1f)]
public float ratio;
void Start () {
startPos = transform.position;
WorldDestination = startPos + LocalDestination;
}
void Update () {
if(activated){
ratio += speed * Time.deltaTime;
} else {
ratio -= speed * Time.deltaTime;
}
Mathf.Clamp01(ratio);
transform.position = Vector3.Lerp(startPos, WorldDestination, ratio);
}
}
The problem is that the varible ratio gets not clamped to 01, it constantly de/increases depending on the bool activated so I have to wait.
Thanks in advance.
Answer by graciasluigi · Feb 01, 2016 at 11:13 AM
float is a value type, so the way you are calling it, clamp is not changing the value of ratio, is just receiving ratio as an argument.
public static float Clamp01(float value);
try this:
ratio = Mathf.Clamp01(ratio);
Your answer
Follow this Question
Related Questions
How do I convert speed and heading to a vector? 3 Answers
How can I change the value of a Float smoothly? 2 Answers
How can you increase a float to certain number and stop, while it is being used. 2 Answers
How do I change a Shader Graph's property (float) over time? 0 Answers
what wrong with lerp. 1 Answer