- Home /
How to make a smooth transition between Vector3's
Hi, so I am trying to do a smooth transition between two positions whenever a controller isGrounded or not. But it doesn't seem to work. Can anyone help me with this please?
Here's my script:
var DefaultPose : Vector3;
var AirPose : Vector3;
private var CurrentPose : Vector3;
var PlayerCon : CharacterController;
var Smooth : float = Time.deltaTime * 3;
function Update () {
if(PlayerCon.isGrounded == false){
transform.localPosition = AirPose * Smooth;
}
else
if(PlayerCon.isGrounded == true){
transform.localPosition = DefaultPose * Smooth;
}
}
Have a look at Vector3.$$anonymous$$oveTowards, and try using smoothDeltaTime along with it.
Answer by mohitramani · Jun 27, 2013 at 10:59 AM
You could use either of the following: Vector3.Lerp(Vector3 from, Vector3 to, float time); Vector3.SLerp(Vector3 from, Vector3 to, float time); SmoothDamp (Vector3 current,Vector3 target, ref Vector3 currentVelocity, float smoothTime, float smoothTime);
Answer by rogeliopuig · Jun 27, 2013 at 10:57 AM
I'm not sure what you are trying to achieve but I wouldn't do it in the update Loop anyway, here's an approach.
float _smoothValue;
if (PlayerCon.isGrounded) {
transform.localPosition = Vector3.Lerp(transform.localPoistion, Airpose, _smoothValue);
}
else {
transform.localPosition = Vector3.Lerp(transform.localPoistion, DefaultPose, _smoothValue);
}
Time.deltaTime changes at every frame and you are initializing it at the very beggining. Not if you are using Lerp cause lerp interpolates between 0 and 1. If you give us more information on what you are trying to achieve we could help you more. Thumbs up if it helps!
Well, I am trying to make a parkour system, kinda, and I want my arms to have a smooth transition to the position they're gonna be in when you're in the air or when you're on the ground and they will lower. That's what I'm trying to achieve.
Your answer
![](https://koobas.hobune.stream/wayback/20220613104956im_/https://answers.unity.com/themes/thub/images/avi.jpg)