Jump Script Doesn't Affect my Player
Hello Everyone! I've run into trouble when it comes to programming and I have to admit that I'm kind of new to the programming community but I'm learning! Anyway, I wanted to code a jumping function to my player in Unity but nothing seems to work, I've circled around this problem for two days now and It's driving me crazy. I can't find the problem within the code. I've tried multiple scripts provided by people on this site, youtube and other pages but nothing seem to affect. When I press spacebar nothing happens and something needs to be wrong with the code i'm writing. As of right now I'm using a simple code I found recently but of course it does not work like the others. If you guys could look at it and perhaps spot the problem and correct me I would be more than happy to listen to your thoughts!
Here is my PlayerController code, I also have a PlayerMotor attached to this script and I don't know if I should write my code in that instead of this, but I don't think so! Also a side note that my player is not a simple cube. It's a 3D model from blender with a armature and all that. Hopefully that would help you understand my situation.
using UnityEngine;
[RequireComponent(typeof(Animator))] [RequireComponent(typeof(PlayerMotor))] [RequireComponent(typeof(Rigidbody))] public class PlayerController : MonoBehaviour {
[SerializeField]
private float speed = 5f;
[SerializeField]
private float lookSensitivity = 3f;
private int forceConst = 50;
//Component caching
private PlayerMotor motor;
private Animator animator;
private Rigidbody rig;
private bool canJump;
void Start()
{
motor = GetComponent<PlayerMotor>();
animator = GetComponent<Animator>();
rig = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
if(canJump)
{
canJump = false;
rig.AddForce(0, forceConst, 0, ForceMode.Impulse);
}
}
void Update()
{
//Jump
if (Input.GetKeyDown(KeyCode.Space))
{
canJump = true;
}
//Calculate movement velocity as a 3D vector
float _xMov = Input.GetAxis("Horizontal");
float _zMov = Input.GetAxis("Vertical");
Vector3 _movHorizontal = transform.right * _xMov;
Vector3 _movVertical = transform.forward * _zMov;
//Final movement vector
Vector3 velocity = (_movHorizontal + _movVertical) * speed;
//Animate movement
animator.SetFloat("Walking", _zMov);
//Apply movement
motor.Move(velocity);
//Calculate roatation as a 3D vector: (turning around)
float _yRot = Input.GetAxisRaw("Mouse X");
Vector3 _rotation = new Vector3(0f, _yRot, 0f) * lookSensitivity;
//Apply rotation
motor.Rotate(_rotation);
//Calculate camera roatation as a 3D vector: (turning around)
float _xRot = Input.GetAxisRaw("Mouse Y");
Vector3 _cameraRotation = new Vector3(_xRot,0f, 0f) * lookSensitivity;
//Apply camera rotation
motor.RotateCamera(_cameraRotation);
}
}
Thanks In advance
Your answer
Follow this Question
Related Questions
Please Help With Script 1 Answer
Issue with if-statements requiring two conditions. 1 Answer
Continuing a Dialogue 0 Answers
Rotate character 0 Answers
Need help increasing GameObject speed without affecting direction OnCollision. 0 Answers