Hi, as the title sais, my problem is that while I´m in play mode, everytime I press a key on my keyboard, the project laggs for half a second. This also happens when releasing the key again, but not when holding it down. My guess is that it is caused by my Character Controller, but I´m not sure.
Here is said PlayerController:
`using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
[SerializeField] Transform playerCamera = null;
[SerializeField] float mouseSens = 3.5f;
[SerializeField] float speed = 6f;
[SerializeField] float smoothTime = 0.2f;
[SerializeField] float gravity = -9.81f;
[SerializeField] float jumpHeight = 2f;
[SerializeField] bool lockMouse = true;
float camRotation = 0f;
float veloY = 0f;
Vector2 currDir = Vector2.zero;
Vector2 currDirVelo = Vector2.zero;
Vector2 currMouseDelta = Vector2.zero;
Vector2 currMouseDeltaVelo = Vector2.zero;
CharacterController controller = null;
void Start()
{
controller = GetComponent<CharacterController>();
if(lockMouse) {Cursor.lockState = CursorLockMode.Locked;Cursor.visible = false;}
}
// Update is called once per frame
void Update()
{
UpdateLook();
UpdateMove();
}
void UpdateLook() {
Vector2 targetMouseDelta = new Vector2(Input.GetAxis("Mouse X"), Input.GetAxis("Mouse Y"));
currMouseDelta = Vector2.SmoothDamp(currMouseDelta, targetMouseDelta, ref currMouseDeltaVelo, smoothTime/10f);
camRotation -= currMouseDelta.y * mouseSens;
camRotation = Mathf.Clamp(camRotation, -90f, 90f);
playerCamera.localEulerAngles = Vector3.right * camRotation;
transform.Rotate(Vector3.up * currMouseDelta.x * mouseSens);
}
void UpdateMove() {
Vector2 targetDir = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
targetDir.Normalize();
currDir = Vector2.SmoothDamp(currDir, targetDir, ref currDirVelo, smoothTime);
if(controller.isGrounded) {veloY = 0f;}
if(Input.GetButtonDown("Jump") && controller.isGrounded) {
veloY = Mathf.Sqrt(jumpHeight * -2f * gravity);
}
veloY += gravity * Time.deltaTime;
Vector3 velocity = (transform.forward * currDir.y + transform.right * currDir.x) * speed + Vector3.up * veloY;
controller.Move(velocity * Time.deltaTime);
}
}`
One weard thing to me is that these lag spikes do not occur in other projects which use a similar way to get an input to move a player. Here is one example of a project that did not cause any lagspikes to me.
I´m using Unity 2020.3.25f1
Any help is appreciated, even if it does not help