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 OverclockedSanic · Jul 31, 2016 at 12:17 PM · physicsrigidbodyraycastjump

A FLAWLESS way to check if character is grounded?

It's my first time working with 3D in unity... Basically what I would usually do in unity 2D to check if the player is grounded or not is to simply add 2 raycasts downwards, one on each side of the player sprite, and || them... However I am now trying to make a 3D android game where checking if the character is grounded ACCURATELY AND FLAWLESSLY is crucial. Problem is, 1) if I add like 2000 raycasts the phone will probably melt before the first frame gets rendered. Every other way I found on the Internet has its own flaws, such as: 2) the OnCollisionEnter/Exit, since it will report that the character is grounded if he hits a wall in mid-air. 3) the simple single raycast down will report that he is not grounded if he is on a ledge or on a hole smaller than his own radius 4) rigidbody.velocity.y, might sometimes report that he is grounded if he is in mid-air, and adding a delay to check if he is falling back down or not in the next frame is not ideal.

I and no, tagging every piece of terrain for OnCollisionEnter is not an option, I need the player to be able to jump on anything, even walls (as long as he is on TOP of them, not hugging them while freefalling...) I am also using a rigidbody with a capsule collider, as using a CharacterController is not an option. Plus, these things are just awful.

I tried this (C# Master Race):

 public float checkCapsuleDistance = 0.1f;
     public float checkCapsuleRadius = 0.5f; //Same as my player's capsule collider's radius
 
     private Rigidbody body;
     private Collider capsuleCollider;
 
     void Start()
     {
         body = GetComponent<Rigidbody>();
         capsuleCollider = GetComponent<Collider>();
     }
 
     bool getGrounded()
     {
         return Physics.CheckCapsule(capsuleCollider.bounds.center, new Vector3(capsuleCollider.bounds.center.x, capsuleCollider.bounds.min.y - checkCapsuleDistance, capsuleCollider.bounds.center.z), checkCapsuleRadius);
     }

problem now being that it always reports that the player is grounded... And I have no idea how to fix it. Ideally I would want the code above to behave properly, or if there's an even better alternative I might use that too...

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

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by The-Evster · Jul 31, 2016 at 02:34 PM

if you add a character controller component to the player you can use characterController.isGrounded to check if the play is currently standing on a Collider

Comment
Add comment · Share
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

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

4 People are following this question.

avatar image avatar image avatar image avatar image

Related Questions

airplane collision detection problem 1 Answer

Interpolate problem? Jump isn't smooth... 1 Answer

Stop picked up object clipping through walls? 0 Answers

How can I create a "round arc" physics based jump? 2 Answers

Raycast stops working after ~40 seconds when target has Rigidbody 2 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