- Home /
Why is my Jumping script not working with my Movement script?
Hi there, I have 2 scripts, one with movement (vertically and horizontally). And I have one script seperatelly made so the character jumps. But when i have both of them on at the same time, only the jumping script works and when i turn the jumping script of the movement script works.
Movement script:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Moving : MonoBehaviour {
public float speed;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);
rb.AddForce(movement * speed);
}
}
Jump script:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CharacterJump : MonoBehaviour {
public CharacterController controller;
private float verticalVelocity;
private float gravity = 14.0f;
private float jumpForce = 10.0f;
// Use this for initialization
void Start () {
controller = GetComponent<CharacterController>();
}
// Update is called once per frame
void Update ()
{
if (controller.isGrounded)
{
verticalVelocity = -gravity * Time.deltaTime;
if (Input.GetKeyDown(KeyCode.Space))
{
verticalVelocity = jumpForce;
}
}
else
{
verticalVelocity -= gravity * Time.deltaTime;
}
Vector3 moveVector = new Vector3(0, verticalVelocity, 0);
controller.Move(moveVector * Time.deltaTime);
}
}
How can i fix this annoying problem?
Thanks in advance <3
Just wondering, are you allowed to post a question everyday? I don't want to spam :/...
Answer by shoother · Mar 01, 2018 at 08:56 PM
Copy your jump script into your movement script as shown below. Not sure why you separated it. Below is the ugly version, but you get my point.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CharacterJump : MonoBehaviour {
public CharacterController controller;
private float verticalVelocity;
private float gravity = 14.0f;
private float jumpForce = 10.0f;
public float speed;
private Rigidbody rb;
// Use this for initialization
void Start () {
controller = GetComponent<CharacterController>();
rb = GetComponent<Rigidbody>();
}
// Update is called once per frame
void Update ()
{
if (controller.isGrounded)
{
float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");
if(moveVertical > 0.1f)
{
Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);
rb.AddForce(movement * speed);
}
if(moveHorizontal > 0.1f)
{
Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);
rb.AddForce(movement * speed);
}
verticalVelocity = -gravity * Time.deltaTime;
if (Input.GetKeyDown(KeyCode.Space))
{
verticalVelocity = jumpForce;
}
}
else
{
verticalVelocity -= gravity * Time.deltaTime;
}
Vector3 moveVector = new Vector3(0, verticalVelocity, 0);
controller.Move(moveVector * Time.deltaTime);
}
}
i didn't solve my problem, but i have realized if i put my jump-script "on" and my movement script "off" the "local" axis spins like crazy on my sphere character. $$anonymous$$aybe it has something to do with the "character controller"? Ps. I seperated them into 2 scripts to easyer see what the problem could be, im still a big noob srry.
Your answer
Follow this Question
Related Questions
Jumping doesn't work, and I don't know why. 1 Answer
Jumping Issue, Need Help. 0 Answers
Not able to jump 1 Answer
Error jumping and moving 2 Answers