- Home /
Question by
David123car7 · Feb 11 at 03:45 PM ·
controllerjumpingjumping object
When jumping and looking to the right the player turns to the right while jumping .
So i am making a first person controller and when i jump and look to the right or to the left the "player" also turns to that direction on the air, and it's supposed to just jump and move forward while you're in the air
public class FirstPersonController : MonoBehaviour
{
//Camera Variables
public float sensitivity;
private float xRotation;
private float yRotation;
private float multiplier = 60f;
public Camera cam;
public Transform playerBody;
//Controller Variables
private float speed = 4f;
private float runSpeed = 9f;
private float gravity = -13f;
private bool runing = false;
public CharacterController controller;
Vector3 graveffect;
public Transform groundCheck;
private float groundDistance = 0.4f;
public LayerMask groundMask;
private bool isGrounded;
private float jumpSpeed = 5f;
private void Start()
{
CameraSettings();
CheckSphere();
}
private void Update()
{
Camera();
Controller();
}
private void Camera()
{
float mouseX = Input.GetAxis("Mouse X");
float mouseY = Input.GetAxis("Mouse Y");
xRotation += mouseX * sensitivity * multiplier * Time.deltaTime;
yRotation -= mouseY * sensitivity * multiplier * Time.deltaTime;
yRotation = Mathf.Clamp(yRotation, -90, 90);
if (controller.isGrounded == false)
{
playerBody.transform.localRotation = Quaternion.Euler(0.0f, 0.0f, 0.0f);
cam.transform.localRotation = Quaternion.Euler(yRotation, xRotation, 0.0f);
}
else
{
cam.transform.localRotation = Quaternion.Euler(yRotation, 0.0f, 0.0f); // Faz com que a camera olhe para cima e baixo
playerBody.transform.localRotation = Quaternion.Euler(0.0f, xRotation, 0.0f); //Faz com que o corpo rode para a esquerda e para a direita
}
}
private void CameraSettings()
{
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false;
}
private void CheckSphere()
{
isGrounded = Physics.CheckSphere(groundCheck.position, groundDistance, groundMask);
}
private void Controller()
{
float x = Input.GetAxis("Horizontal"); // Registar a tecla w/s para andar para a frente/atras.
float z = Input.GetAxis("Vertical"); // Registar a tecla a/d para andar para os lados.
Vector3 move = transform.forward * z + transform.right * x; // Para fazer com que o jogador se possa mexer em todas as direções (https://docs.unity3d.com/ScriptReference/Vector3.html)
controller.Move(move * speed * Time.deltaTime); //Aqui usa-se a variavel move declarada pelo Vector3 e multiplica-se o speed e o time.deltatime
controller.Move(graveffect * Time.deltaTime);
graveffect.y += gravity * Time.deltaTime; // Para fazer com que o jogador sofra gravidade ou seja que caia
if (Input.GetKey("space") && controller.isGrounded) // Para fazer com que o jogador salte
{
graveffect.y = jumpSpeed;
}
if (Input.GetKey("left shift")) // Para fazer com que o jogador corra
{
speed = runSpeed;
}
else
{
speed = 4f;
}
}
}
Comment
Your answer
Follow this Question
Related Questions
How to keep going forward while jumping ? 1 Answer
How to jump up-forward according to time using GetRigidBody.AddForce 0 Answers
How to make character controller forward jump a certain distance? 1 Answer
How do I make this jump function work? 1 Answer
Can't get platforming character to jump 2 Answers