started building out level

Signed-off-by: sdqhome\caleb <caleb@sdqhome.co.uk>
This commit is contained in:
2026-08-05 08:18:15 +01:00
parent f53c8256df
commit 7b8d500f75
6372 changed files with 6314829 additions and 20587 deletions

View File

@@ -96,6 +96,12 @@ public class CameraController : MonoBehaviour
}
}
[Header("Obstacle Collision Avoidance")]
[SerializeField] private bool avoidCollisions = true;
[SerializeField] private LayerMask collisionLayers = ~0; // Default to all layers
[SerializeField] private float cameraRadius = 0.3f; // Radius for SphereCast check
[SerializeField] private float minCollisionDistance = 1.5f;
private void UpdateCameraPosition()
{
// Calculate focus point on player
@@ -103,8 +109,21 @@ public class CameraController : MonoBehaviour
// Calculate orbit rotation & offset vector
Quaternion rotation = Quaternion.Euler(currentPitch, currentYaw, 0);
Vector3 negDistance = new Vector3(0.0f, 0.0f, -distance);
Vector3 targetCameraPos = focusPoint + (rotation * negDistance);
Vector3 desiredCameraDir = (rotation * Vector3.back).normalized;
Vector3 targetCameraPos = focusPoint + (desiredCameraDir * distance);
float adjustedDistance = distance;
// Check for obstacle collision along the line from focusPoint to desired camera position
if (avoidCollisions)
{
if (Physics.SphereCast(focusPoint, cameraRadius, desiredCameraDir, out RaycastHit hit, distance, collisionLayers))
{
// Move camera in front of the hit point
adjustedDistance = Mathf.Max(hit.distance - 0.1f, minCollisionDistance);
targetCameraPos = focusPoint + (desiredCameraDir * adjustedDistance);
}
}
// Smoothly interpolate camera position and rotation
transform.position = Vector3.Lerp(transform.position, targetCameraPos, smoothSpeed * Time.deltaTime);