Разделите число на Vector3 - PullRequest
       1

Разделите число на Vector3

0 голосов
/ 21 февраля 2019

Можно ли разделить число на Vector3?Например, как я могу разделить 1 на вектор масштаба объекта, чтобы изменить размер его дочернего элемента в соответствии с его родительским масштабом без создания нового Vector3, применяя значения каждой оси соответственно?

Ответы [ 3 ]

0 голосов
/ 21 февраля 2019

Нет такого встроенного метода

, но вы можете просто добавить метод расширения один раз как

public static class Vector3Extensions
{
    public static Vector3 Invert(this Vector3 vec)
    {
        return new Vector3(1 / vec.x, 1 / vec.y, 1 / vec.z);
    }
}

, чем позже во всех ваших сценариях, которые вы простодолжен сделать

var parentSize = new Vector3(1.0f, 2.0f, 3.0f);

var invertedParentSize = parentSize.Invert();

// -> 1.0, 0.5, 0.333..
0 голосов
/ 21 февраля 2019

Вы не можете сделать это, но если вы гарантируете, что все три оси изменят масштаб на одно и то же значение, например (1, 1, 1), на (0,5, 0,5, 0,5) или, по крайней мере, в одинаковой пропорции (100%до 70% по всей оси), затем вы можете сохранить в int значение или одну из этих осей.

int number = gameObject.transform.localScale.x;

Затем для дочерних объектов вы просто используете число:

gameObject.transform.localScale *= gameObject.transform.parent.getComponent<someClass>().number;

Переменные типа int могут хранить только одно значение, поэтому вы не можете использовать одну и ту же переменную для одновременного размещения данных по трем осям.

метод, который я вам дал, - это скопировать масштаб, если вы хотите сохранитьразмер потомков, даже если родитель изменяет его масштаб, тогда вы делите 1 / родительский масштаб

int number = 1/gameObject.transform.localScale.x;

gameObject.transform.localScale *= gameObject.transform.parent.getComponent<someClass>().number;
0 голосов
/ 21 февраля 2019

Вы не можете сделать это, поскольку Vector3 не является скалярным значением.

Однако вы можете выполнять математические функции, используя отдельные части Vector3 (x, y, z).

EX:

var number = 5 * someVector.x; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...