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 cyberspacecat_ · Feb 05, 2019 at 02:39 PM · physicsrigidbodyslidingslopes

Help getting sliding / surfing mechanics with rigidbodies.

I've had a hard time finding decent up to date answers on how to implement this into unity. I am looking to get something similar to the sand-surfing of Journey using physics, where the player can quickly descend any snow covered slope while still retaining some control of their slide direction. A large part of what I want to accomplish is having the player dynamically fight against resisting forces such as deep snow and slide freely down steep slopes.

So far I don't have much beyond movement code, all the methods I've attempted haven't worked out but I at least have a raycast that can check for the slope angle. My movement code uses Rigidbody.Moveposition at the moment but if AddForce is more apt for what I'm trying to do I'm up for changing it. I understand this can be a complex issue so if you'd rather link me a tutorial that'd be great.

(Code has been cut down slightly to avoid unnecessary fluff, though I included parts of the movement code for context. - I'm not really a coder so excuse the potential bloat)


 public class Player : MonoBehaviour
 {
     // (My Variables)
 
     // Slope sliding values
     public Vector3 HitNormal;
     public float groundAngle;
 
     // (My Object References)
 
     void Awake ()
     {
         // (My initializations)
     }
 
     void Update()
     {
         // (Code calling void functions below)
     }
     
     // Movement properties
     void Move()
     {
         // (My inputs and adjusting movement speed values)
         
         // Calculate move direction
         moveDirection = Vector3.zero;
         moveDirection = (transform.forward * playerInput.Vertical) + (transform.right * playerInput.Horizontal);
         moveDirection = moveDirection.normalized * moveSpeed;
 
         // (My code turning player based on camera view)
 
         //JUMP
         // Check for ground collision
         Vector3 down = transform.TransformDirection(Vector3.down);
         RaycastHit hit;
 
         if (Physics.Raycast(transform.position, down, 1.5f) && !HeadHit)
             IsGrounded = true;
         else
             IsGrounded = false;

         **// Slope detection**
         if (Physics.Raycast(transform.position, down, out hit, 1.5f))
             HitNormal = hit.normal;
         groundAngle = Vector3.Angle(HitNormal, Vector3.up);
 
         // (My code that also checks for overhead collision)

         // Jump function
         if (playerInput.Jump && IsGrounded)
             playerRB.AddForce(Vector3.up * Mathf.Sqrt(jumpHeight * -2f * Physics.gravity.y), ForceMode.VelocityChange);             
         
     }
 
     private void FixedUpdate()
     {
         // Movement code
         playerRB.MovePosition(playerRB.position + moveDirection * speedModifier * Time.deltaTime);
     }

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

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

Unity 5 - Sliding Rigidbodies with maximum friction 2 Answers

Slope limiting with Rigidbody 0 Answers

Sliding down a slope with a character controller 1 Answer

Rigidbody gain speed falling on slope 0 Answers

Stop character sliding? 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