From 08095945bc79f4985464c5994ee49e28ddd5650d Mon Sep 17 00:00:00 2001 From: Trey Shaw Date: Thu, 19 Feb 2026 20:08:58 -0600 Subject: [PATCH] movement no longer uses mouse, fix room cam bug, larger shovel hitbox --- Assets/Scenes/SampleScene.unity | 2 +- Assets/Scripts/CameraController.cs | 54 ++++++++++++++++++++++-------- Assets/Scripts/PlayerController.cs | 25 ++++++++------ Assets/Scripts/StaticCamRoom.cs | 4 +-- 4 files changed, 57 insertions(+), 28 deletions(-) diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index a5a5d57..16f2bd0 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -2579,7 +2579,7 @@ SphereCollider: m_ProvidesContacts: 0 m_Enabled: 0 serializedVersion: 3 - m_Radius: 0.35 + m_Radius: 0.78 m_Center: {x: 0, y: -0.5, z: 0} --- !u!114 &666997941 MonoBehaviour: diff --git a/Assets/Scripts/CameraController.cs b/Assets/Scripts/CameraController.cs index 4bcd309..607425e 100644 --- a/Assets/Scripts/CameraController.cs +++ b/Assets/Scripts/CameraController.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using System.Linq; +using Unity.VisualScripting; using UnityEngine; public class CameraController : MonoBehaviour @@ -19,30 +20,35 @@ public class CameraController : MonoBehaviour private Vector3 currentCamPosition; private float desiredCamSize; private int positionsSet = 0; // this keeps track of how many cam zones we're in + private float timeReturningHome = 0; // how long has the cam been moving home private List roomsActive; public void SetCurrentPosition(Vector3 currentCamPosition, float desiredCamSize) { positionsSet++; // we have entered a cam zone - cameraObj.transform.parent = null; - float distanceToMove = Vector3.Distance(this.currentCamPosition, currentCamPosition); - float amountToZoom = Mathf.Abs(this.desiredCamSize - desiredCamSize); - moveSpeed = distanceToMove / camMovementTime; - zoomSpeed = amountToZoom / camMovementTime; + if (currentCamPosition != this.currentCamPosition) + { + cameraObj.transform.parent = null; - isTracking = true; - returningHome = false; - - this.currentCamPosition = currentCamPosition; - this.desiredCamSize = desiredCamSize; + float distanceToMove = Vector3.Distance(this.currentCamPosition, currentCamPosition); + float amountToZoom = Mathf.Abs(this.desiredCamSize - desiredCamSize); + moveSpeed = distanceToMove / camMovementTime; + zoomSpeed = amountToZoom / camMovementTime; + + isTracking = true; + returningHome = false; + + this.currentCamPosition = currentCamPosition; + this.desiredCamSize = desiredCamSize; + } } public void ReturnCameraToHome() { positionsSet--; // we have exited a cam zone - + // if this number is greater than 1, we have left a zone but are still in another if (positionsSet <= 0) { @@ -59,6 +65,11 @@ public void ReturnCameraToHome() currentCamPosition = playerCamHome.position; desiredCamSize = baseCamSize; } + else + { + positionsSet--; + SetCurrentPosition(roomsActive[roomsActive.Count - 1].camPosition.position, roomsActive[roomsActive.Count - 1].camZoom); + } } public void AddToRoomsActive(StaticCamRoom room) @@ -100,9 +111,18 @@ void Update() { currentCamPosition = playerCamHome.position; - cameraObj.transform.position = Vector3.MoveTowards(cameraObj.transform.position, currentCamPosition, Time.deltaTime * moveSpeed); - cameraComponent.orthographicSize = Mathf.MoveTowards(cameraComponent.orthographicSize, desiredCamSize, Time.deltaTime * zoomSpeed); - + // Speed up cam if we've been returning home longer than a certain amount + if (timeReturningHome > 1.0f) + { + cameraObj.transform.position = Vector3.MoveTowards(cameraObj.transform.position, currentCamPosition, Time.deltaTime * moveSpeed * 1.5f); + cameraComponent.orthographicSize = Mathf.MoveTowards(cameraComponent.orthographicSize, desiredCamSize, Time.deltaTime * zoomSpeed * 1.5f); + } + else + { + cameraObj.transform.position = Vector3.MoveTowards(cameraObj.transform.position, currentCamPosition, Time.deltaTime * moveSpeed); + cameraComponent.orthographicSize = Mathf.MoveTowards(cameraComponent.orthographicSize, desiredCamSize, Time.deltaTime * zoomSpeed); + } + if (Vector3.Distance(cameraObj.transform.position, currentCamPosition) < 0.1f) { cameraObj.transform.parent = playerCamHome; @@ -110,6 +130,12 @@ void Update() cameraComponent.orthographicSize = baseCamSize; returningHome = false; } + + timeReturningHome += Time.deltaTime; + } + else + { + timeReturningHome = 0; } } } diff --git a/Assets/Scripts/PlayerController.cs b/Assets/Scripts/PlayerController.cs index fa3e0d7..7e8711d 100644 --- a/Assets/Scripts/PlayerController.cs +++ b/Assets/Scripts/PlayerController.cs @@ -36,21 +36,24 @@ void Update() void Walk() { - moveDir = Vector3.zero; - - if (!characterController.isGrounded) - { - moveDir.y -= gravity * Time.deltaTime; - } + float verticalMovement = 0; + float horizontalMovement = 0; if (!isDigging) { - Vector3 verticalMovement = DougBody.transform.forward * Input.GetAxis("Vertical") * walkSpeed * Time.deltaTime; - Vector3 horizontalMovement = DougBody.transform.right * Input.GetAxis("Horizontal") * walkSpeed * Time.deltaTime; - moveDir += verticalMovement + horizontalMovement; + verticalMovement = Input.GetAxisRaw("Vertical"); + horizontalMovement = Input.GetAxisRaw("Horizontal"); } - - characterController.Move(moveDir); + + moveDir = new Vector3(horizontalMovement, 0, verticalMovement).normalized; + moveDir *= walkSpeed; + + if (!characterController.isGrounded) + { + moveDir.y = -gravity; + } + + characterController.Move(moveDir * Time.deltaTime); } void DigDetector() diff --git a/Assets/Scripts/StaticCamRoom.cs b/Assets/Scripts/StaticCamRoom.cs index 3821e72..edb0eef 100644 --- a/Assets/Scripts/StaticCamRoom.cs +++ b/Assets/Scripts/StaticCamRoom.cs @@ -35,8 +35,8 @@ private void OnTriggerEnter(Collider other) if (controller != null) { - controller.SetCurrentPosition(camPosition.position, camZoom); controller.AddToRoomsActive(this); + controller.SetCurrentPosition(camPosition.position, camZoom); } } @@ -46,8 +46,8 @@ private void OnTriggerExit(Collider other) if (controller != null) { - controller.ReturnCameraToHome(); controller.RemoveFromRoomsActive(this); + controller.ReturnCameraToHome(); } }