Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by tasti man LH · Sep 14, 2015 at 10:10 AM · character controllervector3.lerpclimbing

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
 } 
Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

0 Replies

· Add your reply
  • Sort: 

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

2 People are following this question.

avatar image avatar image

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


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges