Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 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 Inan-Evin · Mar 05, 2015 at 12:34 AM · charactercontrollerthroughcrouchfall

Achieved Prone & Crouch, but there is a little question in my mind. (Character Controller)

Hello everyone, I was able to write some Crouch & Prone codes for my player. What it does is, it checks the inputs and correctly calls some Coroutines according to them. In those coroutines, I simply lerp the character controller's height & center variables to some values that I adjust over the inspector. I also know that, when standing up, meaning that increasing height & center, I need to move the controller up a little bit in order to prevent it from falling through the floor. I did that too, but the problem is, because I do the "moving up" part by affecting the transform values of the controller, while standing up, player cannot move.(For example, think that I hold my finger on the d key, which makes the player to move right, I crouch without any problems, but when I try to stand up, player stops moving right, stands up and then continues to move right, and ofcourse it is because I affect the transform when standing up, which prevents the script to move according to input.) I wonder if there is any solution or any other way around for that ? Here is my code :

 IEnumerator Stand()
     {
         if(currentStand != 0)
         {
             currentStand = 0;
             if (co_Crouch != null)
                 StopCoroutine(co_Crouch);
             if (co_Prone != null)
                 StopCoroutine(co_Prone);
 
             float i = 0.0f;
             float rate = 1.0f;
 
             if (currentStand == 1)
                 rate = rate / standSpeedFromCrouch;
             else if (currentStand == 2)
                 rate = rate / standSpeedFromProne;
 
             float currentHeight = controller.height;
             float currentCenterY = controller.center.y;
             Vector3 currentPos = transform.position;
             Vector3 currentCamAnimsPos = camAnims.localPosition;
            
             while (i < 1.0f)
             {
                 i += Time.deltaTime * rate;
                 controller.height = Mathf.Lerp(currentHeight, originalHeight, i);
                 controller.center = new Vector3(controller.center.x, Mathf.Lerp(currentCenterY, originalCenterY, i), controller.center.z);
                 transform.position = Vector3.Lerp(currentPos, currentPos + new Vector3(0, upOffset, 0), i); // this is the part where we move the player up a little bit to prevent it from falling down the below mesh.
                 camAnims.localPosition = Vector3.Lerp(currentCamAnimsPos, new Vector3(currentCamAnimsPos.x, originalCamHeight, currentCamAnimsPos.z), i);
                 yield return null;
             }
             
         }
     }

So you see how I lerp it, is the problem happening because all this coroutine thing, or another reason ? I moved it up in coroutine because it looks well, the best solution that I've found so far. But maybe there is some other way to prevent it from falling down when changing the center & height variables to original values that I do not know. Thanks in advance :)

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

20 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

How to make a character stop going through the terrain? 0 Answers

when crouch, falling through floors 2 Answers

Character Controller mouse click events 1 Answer

Object reference not set to instance of an object 2 Answers

Unity Flash, character jumps when the controller touches a step 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