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