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 /
  • Help Room /
avatar image
0
Question by RookiKui · Dec 08, 2016 at 11:56 AM · c#collisionrigidbodyjumpaddforce

Unity 5: AddForce Increases power when already being pushed towards a collider. How to make stop?

Okay, so I'm kinda new to Unity and all, so yeah.

Anyway, I'm trying to make a basic player for something like a 3d platformer.

The rigidbody player uses the Horizontal and Vertical keys to move, and moves the mouse to rotate. I'm using some basic RigidBody.AddForce for the movement, and RigidBody.AddTorque for rotation. So that's all fine, right? But my problem right now is with jumping. For jumping, I also use AddForce to actually jump, and a OnCollisionStay and OnCollisionExit thingy to detect whether I'm grounded, and it's fine at first, but something weird happens when I try to jump while walking into another rigidbody object. I jump up way higher than usual. I suspect this is because there's something wrong with the way I'm detecting whether I'm grounded, but I dunno. I think there might be a better way to do it, with Raycasts or whatever, but, again, I'm kinda new to coding and stuff, and I don't really understand how to do it.

Anyway, here's my PlayerControl script (Oh yeah, and also, I'm doing this in C#):

 using UnityEngine;
 using System.Collections;
 
 public class PlayerControl : MonoBehaviour {
 
     public float movementSpeed;
     public float rotationSpeed;
     public float jumpSpeed;
 
     private Rigidbody rb;
 
 
     public bool IsGrounded;
 
     void OnCollisionStay (Collision collisionInfo)
     {
         IsGrounded = true;
     }
 
     void OnCollisionExit (Collision collisionInfo)
     {
         IsGrounded = false;
     }
 
     void Start ()
     {
         rb = GetComponent<Rigidbody>();
     }
 
     void FixedUpdate ()
     {
         float moveRotation = Input.GetAxisRaw ("Mouse X");
         float moveHorMovement = Input.GetAxisRaw ("Horizontal");
         float moveVertMovement = Input.GetAxisRaw ("Vertical");
         float moveJump = Input.GetAxisRaw ("Jump");
 
         Movement(moveRotation, moveHorMovement, moveVertMovement, moveJump);
 
     }
 
     void Movement(float moveRotation, float moveHorMovement, float moveVertMovement, float moveJump){
         
         Vector3 rotation = new Vector3 (0.0f,moveRotation,0.0f);
         Vector3 movement = new Vector3 (moveHorMovement, 0.0f, moveVertMovement);
         Vector3 jump = new Vector3 (0.0f,moveJump,0.0f);
 
         rb.AddTorque (rotation * rotationSpeed * Time.deltaTime,ForceMode.Acceleration);
         rb.AddRelativeForce (movement * movementSpeed,ForceMode.Acceleration);
 
         if (IsGrounded) {
             rb.AddRelativeForce (jump * jumpSpeed, ForceMode.Force);
         }
 
     }
         
 
 }


So, yeah. If you know how to make this stop happening, please help!

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
0

Answer by Astraphobia95 · Dec 08, 2016 at 04:33 PM

As you said, you're testing if you're grounded based on if you're touching another collider. If you jump against something, you're still being counted as grounded, and so your if statement will equate to true in the update function, and will keep adding force until you stop touching that object.

Try using tags to check for the floor rather than any 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

287 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 avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image 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 At Wall? 0 Answers

Why Does A Rigidbody Affect Enemy Health? 1 Answer

C# keep previous velocity while jumping, previous solutions not working 0 Answers

How to make Airplane move forward faster INSTANTANEOUSLY? 1 Answer

how to add rigidbody to my mouseposition 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