Untitled
unknown
plain_text
4 years ago
2.8 kB
5
Indexable
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
[SerializeField] private Transform playercamera;
[SerializeField] private float mouseSensitivity = 7f;
[SerializeField] private float walkSpeed = 100f;
[SerializeField] [Range(0.0f, 1.0f)] private float moveSmoothTime = 0.05f;
[SerializeField] [Range(0.0f, 1.0f)] private float mouseSmoothTime = 0.003f;
[SerializeField] private float gravityforce;
private float gravity = 0;
private bool isHitting = false;
CharacterController characterController;
Vector2 currentVelocity = Vector2.zero;
Vector2 currentDirection = Vector2.zero;
Vector2 currentMouseVelocity = Vector2.zero;
Vector2 currentMouseDirection = Vector2.zero;
private float cameraPitch = 0f;
private void Awake()
{
characterController = GetComponent<CharacterController>();
Cursor.visible = false;
Cursor.lockState = CursorLockMode.Locked;
}
// Update is called once per frame
void Update()
{
GravityControl();
Jump();
MouseLook();
InputDirection();
isHitting = Physics.Raycast( playercamera.transform.position, playercamera.transform.forward);
}
private void GravityControl()
{
gravity -= gravityforce;
characterController.Move(new Vector3(0, gravity, 0));
if (characterController.isGrounded)
{
gravity = 0f;
}
}
private void Jump()
{
if (characterController.isGrounded && Input.GetButtonDown("Jump"))
{
Debug.Log("JUMPING");
gravity += 0.1F;
}
}
private void MouseLook()
{
Vector2 targetMouseAxis = new Vector2(Input.GetAxis("Mouse X"), Input.GetAxis("Mouse Y"));
currentMouseDirection = Vector2.SmoothDamp(currentMouseDirection, targetMouseAxis, ref currentMouseDirection, mouseSmoothTime);
cameraPitch -= currentMouseDirection.y * mouseSensitivity;
cameraPitch = Mathf.Clamp(cameraPitch, -90f, 90f);
playercamera.localEulerAngles = Vector3.right * cameraPitch;
transform.Rotate(Vector3.up * currentMouseDirection.x * mouseSensitivity);
}
private void InputDirection()
{
Vector2 targetDirection = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"));
targetDirection.Normalize();
currentDirection = Vector2.SmoothDamp(currentDirection, targetDirection, ref currentVelocity, moveSmoothTime);
Vector3 velocity = (transform.forward * currentDirection.y + transform.right * currentDirection.x) * walkSpeed;
characterController.Move(velocity * Time.deltaTime);
}
}
Editor is loading...