• 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
1
Question by Jeepjump · Apr 21, 2016 at 12:55 AM · movementphysicsrigidbodycharacter

Ground clamping a rigidbody on slope

I decided to press out on my own and make my own character controller using a rigidbody . It's working well overall, I've got it moving around predictably etc. I previously used the Character Controller but I'm not happy with having to use the capsule collider. The point I'm at now I'm trying to get some kind of ground clamp working so when the character moves down a hill it sticks to the hill rather than bouncing down. I've been looking around for information on this problem, but I haven't had much luck. I thought I had it by applying a negative velocity on the y axis. Initially that worked well, but then it kind of forces the character to slide down any hill that's too steep, as well as causing collision issues with the hill itself. Then I thought using a Raycast Hit and finding the hit point then using rb.MovePosition to move the player to the point at which the raycast hits the collider.

Here's my code.

RaycastHit hit;

Physics.Raycast(transform.position, Vector3.down, out hit);

Vector3 groundBelow = new Vector3(0, hit.point.y, 0);

rb.MovePosition(rb.position - groundBelow);

I thought I had it but it basically just tries everything it can to drill into the ground, and overall acts like garbage.

Any help would be really appreciated. I'm doing this in C# but I can translate over from JavaScript no problem.

Thanks.

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
4

Answer by Jeepjump · Apr 22, 2016 at 12:22 AM

Eh, well I figured it out. It's pretty simple now that I see it. I was trying for a complicated solution.

In the movement control Vector3 I applied a negative number to the y axis and that did it.

float groundclamp = -.75;

Vector3 moveDir = new Vector3(Input.GetAxisRaw("Horizontal"), groundclamp, Input.GetAxisRaw("Vertical"));

SO that was stupidly easy. I used the code from the FPS walker So from here I can extrapolate where the player is moving down a ramp and apply the clamp when needed, and all that good stuff.

http://wiki.unity3d.com/index.php?title=FPSWalkerEnhanced#C.23_Version

Thanks Eric Haines, who made the FPS walker. That helped a lot!

Comment
Add comment · Show 1 · 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
avatar image Smooth_Silk · Jan 17, 2020 at 01:53 AM 0
Share

Thanks for co$$anonymous$$g back and leaving your find! This is exactly what I was looking for. I went through all the same steps you did in my head and foresaw a long night, then googled it and found this.

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.

Welcome to Unity Answers

The best place to ask and answer questions about development with Unity.

To help users navigate the site we have posted a site navigation guide.

If you are a new user to Unity Answers, check out our FAQ for more information.

Make sure to check out our Knowledge Base for commonly asked Unity questions.

If you are a moderator, see our Moderator Guidelines page.

We are making improvements to UA, see the list of changes.



Follow this Question

Answers Answers and Comments

73 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

Related Questions

Character controller jittering up and down 2 Answers

How to handle walls with my FirstPersonCharacter? 1 Answer

Make rigidbody walk like character controller 6 Answers

Simple Movement Game: Physics vs Manual Collision Detection? 2 Answers

Rigidbody movement 1 Answer


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