@Naked_Salmon_studio

Как ограничить диапазон вращения в unity?

Я ,наверно, самый тупой программист, но я не понимаю как сделать диапазон вращения. у меня есть стрелка на спидометре, которая должна крутится от -20 до 200 градусов, а у меня она крутится как бешеная без остановки.
public GameObject target;
    public GameObject arrow;
    private float Rotate = 20;
    public Transform pixel_art_1;

    private void Start()
    {
        Transform transformm;
       transformm = GetComponent<Transform>();
    }
        void Update()
    {
        transform.RotateAround(target.transform.position, Vector3.back, Rotate * Time.deltaTime);
        if (transform.rotation.z >= 240)
        {
                transform.RotateAround(target.transform.position, Vector3.back, Rotate * -1 * Time.deltaTime);  
        }
    }
  • Вопрос задан
  • 116 просмотров
Пригласить эксперта
Ответы на вопрос 2
@PrizmMARgh
void setAngle(float angle) {
angle = angle > LIMITMAX ? LIMITMAX : angle < LIMITMIN ? LIMITMIN : angle; // ограничение угла в пределах [LIMITMIN; LIMITMAX]
transform.rotation.z = angle; //(или что-то вроде setRotation, но точно не rotate, не помню, как точно методы называются)
}

если нужно, чтобы стрелка поворачивалась плавнее, то можно писать:
float beta = 0.9; //чем ближе к 1, тем медленнее вращается
transform.rotation.z = (transform.rotation.z) * (1-beta) + angle * beta; //опять же, возможно, по стандарту нельзя напрямую устанавливать значение поворота, так что потребуется set-метод.
Ответ написан
Комментировать
IDzone-x
@IDzone-x
Костыли сила паттерны могила
Ну думаю тебе здесь Mathf.Clamp(); пригодиться. За подробностями лезь в доку
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы