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

Лучший способ помочь другим, поделиться своими находками.

Соотношения и пропорции в 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/
Изображение
Аватара пользователя
ВерховныйНоуНейм
UNIт
 
Сообщения: 68
Зарегистрирован: 25 фев 2017, 19:56

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;
        }
Изображение
Аватара пользователя
ВерховныйНоуНейм
UNIт
 
Сообщения: 68
Зарегистрирован: 25 фев 2017, 19:56

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

Сообщение waruiyume 29 авг 2018, 11:45

Mathf.InverseLerp
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

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

Сообщение ВерховныйНоуНейм 29 авг 2018, 12:58

Почему я нашел это только сейчас :(
Изображение
Аватара пользователя
ВерховныйНоуНейм
UNIт
 
Сообщения: 68
Зарегистрирован: 25 фев 2017, 19:56


Вернуться в Исходники (Копилка)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2