Mini-Games-Game/Assets/Movement.cs
2024-04-28 18:52:09 +01:00

80 lines
2.4 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Movement : MonoBehaviour
{
public float speed = 5.0f;
public float turnSpeed;
public float sprintSpeed = 10.0f;
public float jumpForce;
public float gravity = 9.8f;
public PickUpObject throwForce;
public CharacterController controller;
public Vector3 moveDirection = Vector3.zero;
[Header("Keybinds")]
public KeyCode forwardsKey = KeyCode.W;
public KeyCode backwardsKey = KeyCode.S;
public KeyCode leftKey = KeyCode.A;
public KeyCode rightKey = KeyCode.D;
public KeyCode sprintKey = KeyCode.LeftShift;
public KeyCode jumpKey = KeyCode.Space;
void Start()
{
controller = GetComponent<CharacterController>();
}
void Update()
{
float forwards = Convert.ToSingle(Input.GetKey(forwardsKey));
float backwards = Convert.ToSingle(Input.GetKey(backwardsKey));
float left = Convert.ToSingle(Input.GetKey(leftKey));
float right = Convert.ToSingle(Input.GetKey(rightKey));
moveDirection = new Vector3(right - left, 0, forwards - backwards);
if (!controller.isGrounded)
{
moveDirection.y -= gravity * Time.deltaTime;
controller.Move(moveDirection * Time.deltaTime);
return;
}
throwForce.throwForce = 4.0f;
// Change the direction the player is facing based on the direction they are moving
if (moveDirection != Vector3.zero)
{
Quaternion ToRotation = Quaternion.LookRotation(new Vector3(right - left, 0, forwards - backwards));
throwForce.throwForce = 8.5f;
transform.rotation = Quaternion.RotateTowards(transform.rotation, ToRotation, turnSpeed * Time.deltaTime);
}
if (Input.GetKey(sprintKey))
{
moveDirection *= sprintSpeed;
jumpForce = 4.0f;
if(moveDirection != Vector3.zero)
{
throwForce.throwForce = 20.0f;
}
}
else
{
moveDirection *= speed;
jumpForce = 2.5f;
}
if (Input.GetKeyDown(jumpKey))
{
moveDirection.y = jumpForce;
}
moveDirection.y -= gravity * Time.deltaTime;
controller.Move(moveDirection * Time.deltaTime);
}
}