When I start the game and just when I move, the player body (the standard capsule) is weirdly glitching.
This is the code of the player character itself:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
private CharacterController controller;
public int speed = 0;
private GameObject cam;
public float gravity;
private float currentGravity;
Vector3 finalMovementVector;
void Start()
{
controller = gameObject.GetComponent<CharacterController>();
cam = GameObject.FindGameObjectWithTag("MainCamera");
}
void Update()
{
Vector3 position = new Vector3(transform.position.x, transform.position.y + 2f, transform.position.z);
cam.transform.position = position;
finalMovementVector = Movement() + Gravity() ;
controller.Move(finalMovementVector * Time.deltaTime);
}
Vector3 Gravity()
{
Vector3 downforce = new Vector3(0, -currentGravity, 0);
currentGravity += gravity * Time.deltaTime;
if (controller.isGrounded)
{
if (currentGravity > 1f) currentGravity = 1f;
}
return downforce;
}
Vector3 Movement()
{
Vector3 movementVector = Vector3.zero;
movementVector += transform.forward * Input.GetAxis("Vertical");
movementVector += transform.right * Input.GetAxis("Horizontal");
movementVector *= speed;
return movementVector;
}
}
This is my camera code:
using Palmmedia.ReportGenerator.Core.CodeAnalysis;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Camera : MonoBehaviour
{
private GameObject player;
void Start()
{
player = GameObject.FindGameObjectWithTag("Player");
}
void Update()
{
float horiz = Input.GetAxis("Mouse X") * Time.deltaTime * 1000f;
float vert = Input.GetAxis("Mouse Y") * Time.deltaTime * 1000f;
transform.Rotate(-vert, horiz, 0);
transform.localRotation = Quaternion.Euler(transform.eulerAngles.x, transform.eulerAngles.y, 0);
player.transform.localRotation = Quaternion.Euler(0, transform.eulerAngles.y, 0);
}
}
Can somebody tell me why this happens and maybe how I can fix it?