- Home /
Using Vector3.lerp to climb
So acting on some previous advice, I am attempting to have a character in Unity2D climb up and down vertical objects using Vector3.lerp. Unfortunately, it's my first time using it and I'm not entirely sure what I'm doing.
Foundation of what I have is in the following two scripts down below.
So in the first one below here, I've got two gameobjects that are the markers for the top and bottom of the vertical object I want my player to climb. The idea being that the player moves up and down between the two points. The character is being controlled via controller script I made (in other words, not one of the default ones provided by unity). The basic idea being that in this script, it's checking to see if the player is in range of the climb trigger volume and if the Climb button is being pressed while inside the volume. And when it does so, to turn off my controller script and turns the variable isClimbing true.
var top : Transform;
var bottom : Transform;
private var climbButtonDown : boolean = false;
private var player : CharacterControlTest;
function Start () {
player = GameObject.FindWithTag("Player").GetComponent(CharacterControlTest);
}
function Update () {
}
function OnTriggerStay2D(other : Collider2D){
if(other.tag == "Player" && Input.GetButton("Climb") && !climbButtonDown){
climbButtonDown = true;
if(player.currentClimb == this){
player.currentClimb = null;
player.isClimbing = false;
} else {
player.currentClimb = this;
player.isClimbing = true;
if(player.transform.position.y < bottom.position.y){
player.climbPercent = 0;
}else if(player.transform.position.y > top.position.y){
player.climbPercent = 1;
}else{
}
}
}
if(Input.GetButtonUp("Climb")){
climbButtonDown = false;
}
}
From there it sends isClimbing statement to my character controller script. This is where Vector3.lerp is being used. However at this stage, while the character does go to the Bottom object's position, it stays there and will not move.
I'm not sure if I need to add an additional bit of player.transform.position.y to actually make the character move. Otherwise, not sure what I need to do next.
Character movement script (with all the relevant code) is here:
//Other character movement variables up here
var isClimbing : boolean = false;
var currentClimb : Climbable;
var climbPercent : float = 0;
var body : Rigidbody2D;
function Start () {
anim = GetComponent(Animator);
body = GetComponent(Rigidbody2D);
}
function FixedUpdate () {
if(isClimbing){
body.isKinematic = true;
if(Input.GetAxis("Vertical")){
transform.position = Vector3.Lerp(currentClimb.bottom.position, currentClimb.top.position, climbPercent);
}
} else {
//normal character movement
}
Your answer
Follow this Question
Related Questions
Character that Climbs Everything Including On Ceiling 1 Answer
Can the Locomotion System be adapted to climb vertical surfaces? 2 Answers
Wall Walking / Vertical Climbing (+ Gravity!) 1 Answer
When moving with root motion, How can moving on moving platforms be achieved? 1 Answer
Character Controller going crazy 0 Answers