chunk 1: core gameplay scripts scenes runtime assets
This commit is contained in:
75
Assets/Scripts/Behaviours/Player/PlayerMovementBehaviour.cs
Normal file
75
Assets/Scripts/Behaviours/Player/PlayerMovementBehaviour.cs
Normal file
@@ -0,0 +1,75 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class PlayerMovementBehaviour : MonoBehaviour
|
||||
{
|
||||
|
||||
[Header("Component References")]
|
||||
public Rigidbody playerRigidbody;
|
||||
|
||||
[Header("Movement Settings")]
|
||||
public float movementSpeed = 3f;
|
||||
public float turnSpeed = 0.1f;
|
||||
|
||||
|
||||
//Stored Values
|
||||
private Camera mainCamera;
|
||||
private Vector3 movementDirection;
|
||||
|
||||
|
||||
public void SetupBehaviour()
|
||||
{
|
||||
SetGameplayCamera();
|
||||
}
|
||||
|
||||
void SetGameplayCamera()
|
||||
{
|
||||
mainCamera = CameraManager.Instance.GetGameplayCamera();
|
||||
}
|
||||
|
||||
public void UpdateMovementData(Vector3 newMovementDirection)
|
||||
{
|
||||
movementDirection = newMovementDirection;
|
||||
}
|
||||
|
||||
void FixedUpdate()
|
||||
{
|
||||
MoveThePlayer();
|
||||
TurnThePlayer();
|
||||
}
|
||||
|
||||
void MoveThePlayer()
|
||||
{
|
||||
Vector3 movement = CameraDirection(movementDirection) * movementSpeed * Time.deltaTime;
|
||||
playerRigidbody.MovePosition(transform.position + movement);
|
||||
}
|
||||
|
||||
void TurnThePlayer()
|
||||
{
|
||||
if(movementDirection.sqrMagnitude > 0.01f)
|
||||
{
|
||||
|
||||
Quaternion rotation = Quaternion.Slerp(playerRigidbody.rotation,
|
||||
Quaternion.LookRotation (CameraDirection(movementDirection)),
|
||||
turnSpeed);
|
||||
|
||||
playerRigidbody.MoveRotation(rotation);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Vector3 CameraDirection(Vector3 movementDirection)
|
||||
{
|
||||
var cameraForward = mainCamera.transform.forward;
|
||||
var cameraRight = mainCamera.transform.right;
|
||||
|
||||
cameraForward.y = 0f;
|
||||
cameraRight.y = 0f;
|
||||
|
||||
return cameraForward * movementDirection.z + cameraRight * movementDirection.x;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user