Я пытаюсь ограничить движение (на данный момент ось z) моей камеры с помощью скрипта, прикрепленного к ее оси, границами бильярдного стола, и пока это мой скрипт для тестирования.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class cameraManager : MonoBehaviour
{
void Start()
{
}
void Update()
{
Vector3 cameraPos = transform.position;
cameraPos.z = Mathf.Clamp(transform.position.z, -25, -4);
}
}
но что происходит, так это то, что когда я перемещаю точку поворота камеры с помощью клавиш перемещения через сценарий в другом объекте; поворот камеры не ограничивается и просто выходит за установленный зажим. Я что-то пропустил?
Transform.position
— это свойство с геттером и сеттером, а Vector3
— это структура и, следовательно, тип ценности.
Вы используете только добытчик для возврат и сохраняете локальный Vector3
, но это больше не известно и не связано с transform.position
. Это значение скопировано.
Если вы не назначите что-то обратно transform.position
, сеттер никогда не будет вызываться, и, следовательно, что бы вы ни делали с Vector3
, геттер вернулся вообще не влияет на вашу сцену.
void Update()
{
Vector3 cameraPos = transform.position;
cameraPos.z = Mathf.Clamp(cameraPos.z, -25, -4);
transform.position = cameraPos;
}