Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 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 stuthemoo · Feb 21, 2012 at 10:26 AM · rigidbodyjumpforce

Jump without character controller??

Hi,

I'm trying to make my car (no wheels or anything fancy, it's just a box with colliders and a rigid body) jump so that it can jump over obstacles. The problem is I can't seem to get it to work correctly, all the other answers on here use character controllers (which will not work for me).

Could someone please help me figure this out with just a rigid body?

This is what I have:

 var jumpForce : float = 5;
 
 function Update () {
     if(Input.GetButton("Vertical")){
         rigidbody.AddForce(Vector3.up * jumpForce);
     }
 }
 

But this will continously add force to my car for as long as the up arrow is pressed, I wan't it to reach a max height and then stop adding the force.

Thanks a lot! :D

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

2 Replies

· Add your reply
  • Sort: 
avatar image
0

Answer by asafsitner · Feb 21, 2012 at 02:41 PM

First, use GetButtonDown instead of GetButton, that will happen only return true once, when the user presses the button instead of continuously returning true as long as the button is held down.

Second, add a bool to check if the user is in the air or on the ground so you won't be able to continue adding force up when in mid-air.

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 stuthemoo · Feb 21, 2012 at 08:30 PM 0
Share

Thanks, I'm doing this:

function carIsGrounded() { var hit : RaycastHit; if (Physics.Raycast (transform.position, -Vector3.up, hit)) { var ground = hit.distance; if(ground < 2.1) return true; } }

By checking if the distance is less than 2.1 I know the car is grounded but it seems like it's not the best method, is there a better way?

avatar image
0

Answer by ZweiD · Feb 21, 2012 at 03:51 PM

Or if you want to allow the user to have the option of keeping the button pressed to determine the height of the jump, do something like this:

 var jumpTimer : float; // in seconds
 var maxJumpTime : float = 2; // in seconds
 function Update () {
   if(carIsGrounded()) { // you have to implement this one yourself, eg with a Raycast
     jumpTimer = 0;
   }
   if(Input.GetButton("Vertical") && jumpTimer < maxJumpTime) {
     jumpTimer += Time.deltaTime;
     rigidbody.AddForce(Vector3.up * jumpForce);
   }

(since links don't work inside code sigh : Raycast)

(didn't actually tested the code, sry)

hope thats helps

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 stuthemoo · Feb 21, 2012 at 08:32 PM 0
Share

Thanks a lot man, I was trying to do something similar just now, but yours is a much neater way. Please have a look at my comment on asafsitner's answer.

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

7 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Jumping increases movement speed 1 Answer

How to make a object jump constantly at y and move to the next position to z (perfectly) 0 Answers

Jump for rigidbody 1 Answer

ForceMode.Impulse Doesnt always fire. 2 Answers

Why is it so hard to make a rigidbody jump in the unity engine? 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