Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

333
Views
Jump in using Rigidbody or Character controller

i have been recreating my jump code, i have it all done but i can't add force or anything else. Here's my code

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

public class pBeh : MonoBehaviour
{
CharacterController characterController;
public float MovementSpeed = 1;
public float Gravity = 9.8f;
private float velocity = 0;
private Camera mainCam;
public Rigidbody rb;
public float jumpSpeed = 5.2f;
private Vector3 movingDirection = Vector3.zero;

public CharacterController controller;
public float speed;
float turnSmoothVelocity;
public float turnSmoothTime;
public bool canJump = false;


private void Start()
{
    characterController = GetComponent<CharacterController>();
    mainCam = Camera.main;
}

void Update()
{
    // player movement - forward, backward, left, right
    float horizontal = Input.GetAxis("Horizontal") * 10;
    float vertical = Input.GetAxis("Vertical") * 10;
    Vector3 camRightFlat = new Vector3(mainCam.transform.right.x, 0,
            mainCam.transform.right.z).normalized;
    Vector3 camForwardFlat = new Vector3(mainCam.transform.forward.x, 0,
            mainCam.transform.forward.z).normalized;
    characterController.Move((camRightFlat * horizontal + camForwardFlat * vertical)
            * Time.deltaTime);


    // Gravity
    if (characterController.isGrounded)
    {
        velocity = 0;
    }
    else
    {
        velocity -= Gravity * Time.deltaTime;
        characterController.Move(new Vector3(0, velocity, 0));
    }
    if (canJump == true && Input.GetKeyDown(KeyCode.Space))
    {

        Debug.Log("Jumped");/*
        transform.Translate(Vector3.up * 5.0f * Time.deltaTime);
        rb.AddRelativeForce(Vector3.up * 8.0f);
        rb.AddForce(Vector3.up * 8.0f)
        i have tried a lot more, but it just doesn't work.
        The sphere (Player) does nothing or shakes.
        */


    }
    
    




        
}
private void OnCollisionEnter(Collision collision)
{
    if (collision.gameObject.tag == "enemy")
    {
        SceneManager.LoadScene("SampleScene");
    }
}
void FixedUpdate()
{
    if ((controller.collisionFlags & CollisionFlags.Below) != 0)
    {
        //Debug.Log("ground");
        canJump = true;
        
    }
    else
    {
        canJump = false;
    }
    
    

}

As i said it works just fine i just can't find reason why i cannot jump. I have all character controller right and rigidbody too. If you could help i would be happy. Btw i am beginner so i copied movement to be same as camera. Thanks!

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

From what I know, rigidbody and character controller do not work together (on the same object) so you have to choose one or the other, if you are using rigidbody then a ground check or similiar stuff would not be necessary since rigidbody is using unity physicis system so a lot of the stuff would be already done for you to simulate physics but you should still read thru the document

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!