Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Transform в unity.

Данияр Абдуллин Ученик (50), открыт 2 недели назад
Как для transform.Rotate поставить ограничитель углов.
1 ответ
natural pupsik Профи (533) 1 неделю назад
Это делается с помощью Mathf.Clamp()
В ней ты указываешь первым значение, вторым минимальное значение, третьим максимальное значение.

Вот код который я написал для примера:

using UnityEngine;

public class CameraController : MonoBehaviour
{
public float rotation;

void Update()
{
float rotationX = Mathf.Clamp(transform.rotation.x+rotation, -80f, 80f); // Получаем ось x от transform.rotation и указываем минимальное и максимальное значение
transform.rotation = Quaternion.Euler(rotationX, 0, 0); // Поворачиваем камеру
}
}

Короче здесь мы изменяем переменную rotation в редакторе(в движке), и стараемся поставить значение больше 80 или наоборот меньше -80. Скрипт поворачивает камеру и если наша переменная больше 80 то скрипт останавливает поворот камеры на 80 не смотря на то что значение rotation больше 80.
Данияр АбдуллинУченик (50) 1 неделю назад
А можно сделать так чтобы объект вращался при помощи мыши? Если да то можно пример.
natural pupsik Профи (533) Данияр Абдуллин, вот
 using UnityEngine; 
 
public class CameraMovement : MonoBehaviour 
{ 
    private float rotationX, speed; 
 
    void Start() 
    { 
        speed = 2f; // Скорость поворота можно поставить любую 
    } 
 
    void Update() 
    { 
        float MouseY = Input.GetAxis("Mouse Y"); // Получаем значение по движению мыши вверх или вниз 
 
        rotationX -= MouseY * speed; 
        rotationX = Mathf.Clamp(rotationX, -80f, 80f); // Получаем ось x от transform.rotation и указываем минимальное и максимальное значение 
        transform.rotation = Quaternion.Euler(rotationX, 0, 0); // Поворачиваем камеру вверх или вниз 
    } 
} 
 
Можно улучшить код сделать его более удобным. Если появляется какая любая ошибка можете ответить на этот комментарий
Похожие вопросы