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 mullac51 · Jun 03, 2014 at 10:02 PM · javascriptcharactercontroller

Struggling with jumping!

I'm making a simple Unity 2D game. I am trying to make my character jump properly. At the moment when i press down spacebar repeatably the character will keep jumping till he hits the top of the screen. Here's the code:

 #pragma strict
 
  var moveLeft : KeyCode;
  var moveRight : KeyCode;
  var Jump : KeyCode;
          
  var speed : float = 4;
  var JumpHeight : float = 10;
 
 function Update () 
 {
     if (Input.GetKey(moveLeft))
     {
         rigidbody2D.velocity.x = speed *-1;
     }
     else if (Input.GetKey(moveRight))
     {
         rigidbody2D.velocity.x = speed;
     }
     else
     {
         rigidbody2D.velocity.y = 0;
     }
     
     if (Input.GetKeyDown(Jump))
     {
         rigidbody2D.velocity.y = JumpHeight;
     }
     else if (Input.GetKeyDown(Jump))
     {
         rigidbody2D.velocity.y = 0;
     }
     
     
     
 
     
     
 }
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

3 Replies

· Add your reply
  • Sort: 
avatar image
0

Answer by Jeff-Kesselman · Jun 03, 2014 at 10:04 PM

These lines of code make no sense.

Lets see if you can figure out why...

 if (Input.GetKeyDown(Jump))
     {
        rigidbody2D.velocity.y = JumpHeight;
     }
     else if (Input.GetKeyDown(Jump))
     {
        rigidbody2D.velocity.y = 0;
     }
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 mullac51 · Jun 03, 2014 at 10:14 PM 0
Share

I don't need the else if at all?

avatar image
0

Answer by Kmanthe2 · Oct 17, 2014 at 06:42 PM

It sounds like you need to check if your character is grounded.

I have not played with 2d in unity yet, but in 3d the logic is something like this:

if (controller.isGrounded)

{

 if (Input.GetButtonDown("Jump")))

    {

          velocity +=transform.up * jumpPower * Time.deltaTime ; 

    }


}

I hope at the very least that this can help you start searching in the right direction. Good luck with finding the answer.

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
avatar image
0

Answer by DocMcShot · Oct 17, 2014 at 07:05 PM

I think you have 2 things going on here. I typically use C#, but I'll try some Javascript :)

Remove the:

  else if (Input.GetKeyDown(Jump))
      {
          rigidbody2D.velocity.y = 0;
      }

Next, you should add your force to your jump height by using the rigidbody2d.AddForce() function. You'll most likely have to bump your JumpHeight up quite a bit though. Like so:

  if (Input.GetKeyDown(Jump))
      {
          rigidbody2D.AddForce(0, JumpHeight, 0);
      }

Lastly, just some closing thoughts. You'll need to add a bool that checks if the Jump button was just pushed or you'll be able continuously jump. Also, If you use the AddForce() method, you should probably put that in the FixedUpdate() to make it more accurate. Hope this helps!

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

24 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

Related Questions

Why doesn't this animation script work? 3 Answers

help with character respawn after death (javascript) 1 Answer

Prevent character from autojumping when moving down a slope. 0 Answers

Setting Scroll View Width GUILayout 1 Answer

Unslide does not revert back to normal 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