Johnny Dollard
Johnny Dollard

Reputation: 758

How can I make a game object jump when I press a key (preferably space)?

I have this C# script attached to my main camera game object which also has a capsule collider attribute. However, it doesn't seem to do anything. How should I modify/add to this to make the camera "jump" and fall down to the ground again?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Jump : MonoBehaviour {


    [HideInInspector] public bool jump = false;
    public float jumpForce = 1000f;
    public Transform groundCheck;


    private bool grounded = false;
    private Rigidbody rb;


    // Use this for initialization
    void Awake () 
    {
        rb = GetComponent<Rigidbody>();
    }

    // Update is called once per frame
    void Update () 
    {
        grounded = Physics2D.Linecast(transform.position, groundCheck.position, 1 << LayerMask.NameToLayer("Ground"));

        if (Input.GetButtonDown("Jump") && grounded)
        {
            jump = true;
        }
    }

    void FixedUpdate()
    {

        if (jump)
        {
            rb.AddForce(new Vector2(0f, jumpForce));
            jump = false;
        }
    }
}

Also, I would like to have the key for this be the spacebar if possible, but whatever key works or is there already is fine. I am still learning C#, so please forgive me if the solution is obvious.

Upvotes: 0

Views: 1297

Answers (1)

Deadzone
Deadzone

Reputation: 814

This line is most likely causing the problem:

grounded = Physics2D.Linecast(transform.position, groundCheck.position, 1 << LayerMask.NameToLayer("Ground"));`

There are 2 reason that it wont produce proper results:

  1. You haven't setup your ground tiles or the place where you character moves to the "Ground" layer. You wont have this by default but you can add it from the Project Settings->Tags and Layers menu.

  2. Your colliders are not close enough to the ground thus not causing collision.

Besides that it should work fine.

Upvotes: 1

Related Questions