Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 14 Next capture
2021 2022 2023
2 captures
13 Jun 22 - 14 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 /
  • Help Room /
avatar image
0
Question by ark_ryl · Jul 02, 2021 at 02:25 PM · rigidbodyterrainobjectcollision detection

Checking whether player is standing on terrain or object,Checking if player is on terrain or object

I'm somewhat of a newbie to unity. And I'm currently trying to develop a system of changing the sound of the player's footsteps if they walk onto an object.

Currently, I have the following system set up in a larger audio manager class which is attached to the player. It checks to see if the player is colliding with the terrain or an object (which is then used elsewhere to determine footstep sounds):

         void GroundOrObjCheck(Collision collision)
         {
             if (collision.gameObject.tag == "Terrain")
             {
                 Debug.Log("Player colliding with terrain");
                 playerIsOnTerrain = true;
                 return;
             }
             else if (collision.gameObject.tag == "Object")
             {
                 Debug.Log("Player colliding with object");
                 playerIsOnTerrain = false;
 
                 //Finds name of material of the current object player is colliding with
                 materialName = collision.gameObject.GetComponent<Renderer>().material.name;
                 return;
 
             }
         }
 
         void OnCollisionEnter(Collision collision)
         {
             GroundOrObjCheck(collision);
         }

My issue is, is that the game is detecting collisions very sporadically. It only detects the collision of the wooden test platform if I hit it from the side and doesn't detect colliding with the terrain at all. I've tried adding a rigidbody component to both the terrain and test platform (with IsKinematic = true) but with no luck.

Below is a pic of my setup for concept alt text

,I'm somewhat of a newbie to unity. And I'm currently trying to develop a system of changing the sound of the player's footsteps if they walk onto an object.

Currently, I have the following system set up in a larger audio manager class which is attached to the player. It checks to see if the player is colliding with the terrain or an object (which is then used elsewhere to determine footstep sounds):

         void GroundOrObjCheck(Collision collision)
         {
             if (collision.gameObject.tag == "Terrain")
             {
                 Debug.Log("Player colliding with terrain");
                 playerIsOnTerrain = true;
                 return;
             }
             else if (collision.gameObject.tag == "Object")
             {
                 Debug.Log("Player colliding with object");
                 playerIsOnTerrain = false;
 
                 //Finds name of material of the current object player is colliding with
                 materialName = collision.gameObject.GetComponent<Renderer>().material.name;
                 return;
 
             }
         }
 
         void OnCollisionEnter(Collision collision)
         {
             GroundOrObjCheck(collision);
         }

My issue is, is that the game is detecting collisions very sporadically. It only detects the collision of the wooden test platform if I hit it from the side and doesn't detect colliding with the ground at all. I've tried adding a rigidbody component to both the terrain and test platform (with IsKinematic = true) but with no luck.

Below is a pic of my setup for concept alt text

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 CZNextik · 6 days ago

Did you try raycasting from the player feet? That should do the job better.

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

118 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 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 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 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 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 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

Rigidbody - Why does my issue get fixed by doing THIS? 0 Answers

Raycast doesn't work properly 1 Answer

Following through terrain with FPSController 0 Answers

Is there any good sample code for shooting a projectile and collision detection? 0 Answers

Get horizontal velocity of an object 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