Страница 1 из 1

Соотношения и пропорции в Unity

СообщениеДобавлено: 28 авг 2018, 22:17
ВерховныйНоуНейм
Я совсем недавно мучился с этой проблемой, но при поиске очень трудно найти нужный ответ. Так что эта тема для тех, кто подзабыл алгебру и хочет узнать соотношение (например) 10 к 5, как 3 к 2.
Например, у вас есть персонаж, который должен, приближаясь к какому-нибудь объекту испытывать страх или радость или издавать звук и по мере приближения "эффект" должен усиливаться.
Собственно у вас есть максимальная дистанция, на которой будет начинаться эффект (ниже "A").
Пройденная персонажем дистанция (Например 20 метров из 25) (ниже "B").
И максимальное число эффекта (Например для пост-обработки на камере) (ниже "C").
Вам нужно узнать "пройденную дистанцию", только теперь для эффекта (ниже "X").
Вот формулы:
X = (B / A) * C (На максимальной дистанции максимальный эффект); (Прямая пропорция)
X = С - ((B / A) * C) (В плотную к объекту максимальный эффект); (Обратная пропорция)

Я например использую это для визуальных эффектов камеры вблизи врагов.
Калькулятор: https://ru.onlinemschool.com/math/assis ... alculator/

Re: Соотношения и пропорции в Unity

СообщениеДобавлено: 29 авг 2018, 10:30
ВерховныйНоуНейм
Пример с Update:
Синтаксис:
Используется csharp
        void Update () {
                if (Enemy != FindClosestEnemy ())
                        Enemy = FindClosestEnemy ();
                distance = Vector2.Distance (transform.position, Enemy.transform.position);
                if (distance <= minDistance) {
                        Camera.main.GetComponent<VignetteAndChromaticAberration> ().enabled = true;
                        if (!Camera.main.GetComponent<AudioSource> ().isPlaying)
                                Camera.main.GetComponent<AudioSource> ().Play ();
                        Camera.main.GetComponent<AudioSource> ().volume = 1 - ((distance / minDistance) * 1);
                        Camera.main.GetComponent<VignetteAndChromaticAberration> ().intensity = 0.4f - ((distance / minDistance) * 0.4f);

                        //(distance / 25) * 4
                        //4 - ((distance / 25) * 4)
                } else
                        Off ();
        }
        void Off () {
                Camera.main.GetComponent<VignetteAndChromaticAberration> ().enabled = false;
                Camera.main.GetComponent<AudioSource> ().Stop ();
                Camera.main.GetComponent<AudioSource> ().volume = 0;
                Camera.main.GetComponent<VignetteAndChromaticAberration> ().intensity = 0;
        }

Re: Соотношения и пропорции в Unity

СообщениеДобавлено: 29 авг 2018, 11:45
waruiyume
Mathf.InverseLerp

Re: Соотношения и пропорции в Unity

СообщениеДобавлено: 29 авг 2018, 12:58
ВерховныйНоуНейм
Почему я нашел это только сейчас :(