-
Notifications
You must be signed in to change notification settings - Fork 2
/
PlayerController.cs
76 lines (66 loc) · 2.32 KB
/
PlayerController.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public CharacterController cc;
[SerializeField] private GameObject player;
[SerializeField] private Camera cam;
[SerializeField] private float Sensitivity;
[SerializeField] private float speed, walk, run, crouch
private Vector3 crouchScale, normalScale;
public bool isMoving, isCrouching, isRunning;
private float X, Y;
private void Start()
{
speed = walk;
crouchScale = new Vector3(1, .75f, 1);
normalScale = new Vector3(1, 1, 1);
cc = GetComponent<CharacterController>();
cc.enabled = true;
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false;
}
private void Update()
{
#region Camera Limitation Calculator
//Camera limitation variables
const float MIN_Y = -60.0f;
const float MAX_Y = 70.0f;
X += Input.GetAxis("Mouse X") * (Sensitivity * Time.deltaTime);
Y -= Input.GetAxis("Mouse Y") * (Sensitivity * Time.deltaTime);
if (Y < MIN_Y)
Y = MIN_Y;
else if (Y > MAX_Y)
Y = MAX_Y;
#endregion
transform.localRotation = Quaternion.Euler(Y, X, 0.0f);
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");
Vector3 forward = transform.forward * vertical;
Vector3 right = transform.right * horizontal;
cc.SimpleMove((forward + right) * speed);
// Determines if the speed = run or walk
if (Input.GetKey(KeyCode.LeftShift))
{
speed = run;
isRunning = true;
}
//Crouch
else if (Input.GetKey(KeyCode.LeftControl))
{
isCrouching = true;
isRunning = false;
speed = crouch;
player.transform.localScale = crouchScale;
}
else
{
isRunning = false;
isCrouching = false;
speed = walk;
player.transform.localScale = normalScale;
}
// Detects if the player is moving.
// Useful if you want footstep sounds and or other features in your game.
isMoving = cc.velocity.sqrMagnitude > 0.0f ? true : false;
}
}