将数字除以Vector3

时间:2019-02-21 14:47:12

标签: unity3d vector

是否可以将数字除以Vector3?例如,如何将对象的比例向量除以1,以根据其父比例缩放来调整其子对象的大小,而不用制作新的Vector3分别应用每个轴的值?

3 个答案:

答案 0 :(得分:3)

没有内置这种方法

但您只需添加一次extension method即可

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..

答案 1 :(得分:0)

您不能这样做,因为Vector3不是标量值。

但是,您可以使用Vector3(x,y,z)的各个部分来进行数学运算。

EX:

var number = 5 * someVector.x; 

答案 2 :(得分:0)

您不能这样做,但是如果您保证所有三个轴都将比例更改为相同的值,例如(1、1、1)到(0.5、0.5、0.5),或者至少以相同的比例(100%到所有轴的70%),则可以将其中一个轴的值​​保存为一个整数。

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;