Untitled
unknown
plain_text
3 years ago
1.9 kB
37
Indexable
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UIElements;
public class CameraScript : MonoBehaviour
{
GameObject target;
Camera cam;
public float horizontalPadding = 3.0f;
public float verticalPadding = 2.0f;
float maxHorizontalDistance;
float maxVerticalDistance;
// Start is called before the first frame update
void Start()
{
target = GameObject.FindGameObjectWithTag("Player");
cam = GetComponent<Camera>();
maxVerticalDistance = cam.orthographicSize - verticalPadding;
maxHorizontalDistance = cam.orthographicSize * cam.aspect - horizontalPadding;
}
// Update is called once per frame
void Update()
{
// Is player to far to the right?
if (target.transform.position.x > transform.position.x + maxHorizontalDistance)
{
SetX(target.transform.position.x - maxHorizontalDistance);
}
// Too far to the left?
else if (target.transform.position.x < transform.position.x - maxHorizontalDistance)
{
SetX(target.transform.position.x + maxHorizontalDistance);
}
// Too high up?
if (target.transform.position.y > transform.position.y + maxVerticalDistance)
{
SetY(target.transform.position.y - maxVerticalDistance);
}
// Too low down?
else if (target.transform.position.y < transform.position.y - maxVerticalDistance)
{
SetY(target.transform.position.y + maxVerticalDistance);
}
}
void SetX(float newX)
{
transform.position = new Vector3(newX, transform.position.y, transform.position.z);
}
void SetY(float newY)
{
transform.position = new Vector3(transform.position.x, newY, transform.position.z);
}
}
Editor is loading...