Впервые сел за этот движок и нашел скрипт для свободной камеры, так вот мне нужно её ограничить по осям z, y, и x. Тк я не хочу что-бы объект вылетал за заданные мной рамки. Сама камера:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraFly : MonoBehaviour {
public float mouseSensitivity = 3.0f;
public float speed = 2.0f;
private Vector3 transfer;
public float minimumX = -360F;
public float maximumX = 360F;
public float minimumY = -60F;
public float maximumY = 60F;
float rotationX = 0F;
float rotationY = 0F;
Quaternion originalRotation;
void Start() {
originalRotation = transform.rotation;
}
void Update() {
// Движения мыши -> Вращение камеры
rotationX += Input.GetAxis("Mouse X") * mouseSensitivity;
rotationY += Input.GetAxis("Mouse Y") * mouseSensitivity;
rotationX = ClampAngle (rotationX, minimumX, maximumX);
rotationY = ClampAngle (rotationY, minimumY, maximumY);
Quaternion xQuaternion = Quaternion.AngleAxis (rotationX, Vector3.up);
Quaternion yQuaternion = Quaternion.AngleAxis (rotationY, Vector3.left);
transform.rotation = originalRotation * xQuaternion * yQuaternion;
// перемещение камеры
transfer = transform.forward * Input.GetAxis("Vertical");
transfer += transform.right * Input.GetAxis("Horizontal");
transform.position += transfer * speed * Time.deltaTime;
}
public static float ClampAngle (float angle, float min, float max)
{
if (angle < -360F) angle += 360F;
if (angle > 360F) angle -= 360F;
return Mathf.Clamp (angle, min, max);
}
}
По поводу ограничения обзора все понятно, тут имеются публичные переменные класса. Хотелось бы что-то вроде если позиция.камера.х = нужное значение по x => двигать камеру в нужное значение по x
. Сделать бы что-то вроде тупика. Буду рад любой помощи.
Попробуйте этот код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraFly : MonoBehaviour
{
public float mouseSensitivity = 3.0f;
public float speed = 2.0f;
private Vector3 transfer;
public float minimumX = -360F;
public float maximumX = 360F;
public float minimumY = -60F;
public float maximumY = 60F;
float rotationX = 0F;
float rotationY = 0F;
Quaternion originalRotation;
const float minCamX = -400; // минимальная позиция по X
const float maxCamX = 400; // максимальная позиция по X
const float minCamY = -100; // минимальная позиция по Y
const float maxCamY = 100; // максимальная позиция по Y
const float minCamZ = -400; // минимальная позиция по Z
const float maxCamZ = 400; // максимальная позиция по Z
void Start()
{
originalRotation = transform.rotation;
}
void Update()
{
// Движения мыши -> Вращение камеры
rotationX += Input.GetAxis("Mouse X") * mouseSensitivity;
rotationY += Input.GetAxis("Mouse Y") * mouseSensitivity;
rotationX = ClampAngle(rotationX, minimumX, maximumX);
rotationY = ClampAngle(rotationY, minimumY, maximumY);
Quaternion xQuaternion = Quaternion.AngleAxis(rotationX, Vector3.up);
Quaternion yQuaternion = Quaternion.AngleAxis(rotationY, Vector3.left);
transform.rotation = originalRotation * xQuaternion * yQuaternion;
// перемещение камеры
transfer = transform.forward * Input.GetAxis("Vertical");
transfer += transform.right * Input.GetAxis("Horizontal");
transform.position += transfer * speed * Time.deltaTime;
RestrictionCam();
}
public static float ClampAngle(float angle, float min, float max)
{
if (angle < -360F) angle += 360F;
if (angle > 360F) angle -= 360F;
return Mathf.Clamp(angle, min, max);
}
// Ограничение камеры
void RestrictionCam()
{
Vector3 cl = transform.position;
cl.x = Mathf.Clamp(cl.x, minCamX, maxCamX);
cl.y = Mathf.Clamp(cl.y, minCamY, maxCamY);
cl.z = Mathf.Clamp(cl.z, minCamZ, maxCamZ);
transform.position = cl;
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
В таблице размером 3x3, проставлены в произвольном порядке цифры от 1 до 9Требуется последовательно обойти все элементы этой таблицы таким...
проект webapi на C#
Мне нужно узнать координаты точки, на которую нажал пользователь на форме
Такой вопросЕсть 2 разные таблицы DataGridView, условно DG1 и DG2, находящиеся на разных формах и есть форма с полями и комбобоксом для добавления данных...