Untitled

 avatar
unknown
csharp
6 months ago
2.6 kB
5
Indexable
using System.Collections;
using UnityEngine;

public class CameraPan : MonoBehaviour
{
    public Transform player;
    public float panSpeed = 5f;
    private bool isPanning = false;
    private float screenWidth;
    private float screenHeight;

    private void Start()
    {
        screenHeight = Camera.main.orthographicSize * 2;
        screenWidth = screenHeight * Camera.main.aspect;
        Debug.Log("Screen Width: " + screenWidth + ", Screen Height: " + screenHeight);
    }

    private void OnTriggerEnter2D(Collider2D other)
    {
        if (isPanning)
        {
            Debug.Log("Panning is already in progress, ignoring trigger.");
            return;
        }

        Vector3 panOffset = Vector3.zero;

        // Check for each border trigger specifically
        if (other.CompareTag("Right Border"))
        {
            Debug.Log("Triggered by Right Border");
            panOffset = new Vector3(screenWidth, 0, 0); // Pan right
        }
        else if (other.CompareTag("Left Border"))
        {
            Debug.Log("Triggered by Left Border");
            panOffset = new Vector3(-screenWidth, 0, 0); // Pan left
        }
        else if (other.CompareTag("Up Border"))
        {
            Debug.Log("Triggered by Up Border");
            panOffset = new Vector3(0, screenHeight, 0); // Pan up
        }
        else if (other.CompareTag("Down Border"))
        {
            Debug.Log("Triggered by Down Border");
            panOffset = new Vector3(0, -screenHeight, 0); // Pan down
        }
        else
        {
            Debug.Log("Triggered by an unknown object: " + other.tag);
        }

        if (panOffset != Vector3.zero)
        {
            Debug.Log("Starting camera pan to offset: " + panOffset);
            StartCoroutine(PanCamera(panOffset));
        }
        else
        {
            Debug.Log("No pan offset set, pan not started.");
        }
    }

    private IEnumerator PanCamera(Vector3 panOffset)
    {
        isPanning = true;
        Vector3 targetPosition = transform.position + panOffset;
        Debug.Log("Target position for pan: " + targetPosition);

        while (Vector3.Distance(transform.position, targetPosition) > 0.1f)
        {
            transform.position = Vector3.Lerp(transform.position, targetPosition, panSpeed * Time.deltaTime);
            Debug.Log("Panning... Current Position: " + transform.position);
            yield return null;
        }

        transform.position = targetPosition;
        Debug.Log("Pan complete. Final Position: " + transform.position);
        isPanning = false;
    }
}
Editor is loading...
Leave a Comment