Jump to content
  • Advertisement
Sign in to follow this  
Ovicior

Unity Unity C# Jump Code Was Working. Now It's Not.

This topic is 1020 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hey,

So I wrote this based on some guides/tutorials on the internet. Pretty proud that I could understand all of the code I wrote. Anyways, I got to making the 'jump' system work. I then attempted to add a way to make it so the player could not jump an infinite amount of times. I didn't finish, and screwed up a few times. I used a backup of the code and copied + pasted it in. Now it's suddenly not working. A + D movement works fine, but SPACE does not cause the player to jump. Please help:

using UnityEngine;
using System.Collections;
 
public class PlayerController : MonoBehaviour
{
 
    public float moveSpeed = 5;
    public float jumpHeight = 100;
    public Rigidbody2D rigidBody;
 
    // Use this for initialization
    void Start()
    {
        rigidBody = GetComponent<Rigidbody2D>();
    }
 
    // Update is called once per frame
    void Update()
    {
        if (Input.GetAxisRaw("Horizontal") > 0.5f || Input.GetAxisRaw("Horizontal") < -0.5f)
        {
            transform.Translate(new Vector3(Input.GetAxisRaw("Horizontal") * moveSpeed * Time.deltaTime, 0f, 0f));
        }
 
        if (Input.GetKeyDown(KeyCode.W))
        {
            rigidBody.AddForce(new Vector2(0, jumpHeight));
        }
    }
}

Code: http://pastebin.com/K8iftHTx

Edited by Ovicior

Share this post


Link to post
Share on other sites
Advertisement

Alright, I figured it out.

 

Never make your variables in Unity public. The public settings were taking priority over the code, messing everything up.

Share this post


Link to post
Share on other sites

Public variables are there to allow artists to set up values on editor, your rigidbody has no sense to be public since it's only used for this class.

Share this post


Link to post
Share on other sites

It could've been that his jumpheight was set to 0 as a public variable, or some low number, or the mass on the object was changed, so the jumpheight was then not a sufficient enough force to cause the player to jump.

 

Depending on your game, I kind of like doing AddForce and adding the mass into the equation ( so AddForce( someForce * rigidbody.Mass), so that if I tweak the mass for some other reason, my jump height stays relatively stable.  Though in my case it was for cannon shell lobbing, I wanted them to have greater impact on their targets, but every time I tweaked them, the shells would travel slower, which I didn't want.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!