一、创建个TransformTest文件
publicGameObject obj1;
publicGameObject obj2;
publicGameObject obj3;
1.void Start () {
//1.,子类跟着父类走
//把物体2当做1的子类 -------以都相对于世界坐标中心为参考,
Debug.Log(obj1 .transform.position);
Debug.Log(obj2.transform.position);
//是与父物体为参考坐标系远点的,如果没有父物体,那么就使用世界坐标系
Debug.Log("obj1LocalPosition" + obj1.transform.localPosition);
Debug.Log("obj2LocalPosition:" + obj2.transform.localPosition);
//2.缩放
Debug.Log(obj1.transform.localScale);//父类
//1.父类Scale 为3,3,3子类为2,2,2,把子类拖出来,单独成一体,那么尺寸就会变成6,6,6;
// 2.父类为3,3,3 子类也改为3,3,3 单独拖出来就会变成9,9,9;
//3.改变父类的尺寸子类也会相对改变。
Debug.Log(obj2.transform.localScale);//子类
//2.1单独的全局缩放,本身的大小,父*子类的
Debug.Log(obj2.transform.lossyScale);//就会显示出单独拖出来时的尺寸,6,6,6
//3.旋转-----unity顺序zxy,都会绕着z轴旋转,z是父类
//四元数---记住这么使用 --把欧拉角转化成4元数
Quaternion q = Quaternion.identity; //默认不旋转
q.eulerAngles = newVector3(0, 30, 0);//欧拉角,后面括号对应的,绕着Y轴旋转30度
obj3.transform.rotation = q;
}
void Update () {-------------旋转
obj3.transform.Rotate(newVector3(0, 30, 0) * Time.deltaTime);//相当于每帧旋转30度--Time.deltaTime相当于1/60,会变慢。
}
二、欧拉角、四元数创建个EulerAndQuaternion文件:
//创建按钮,旋转物体--unity里对应Cube里含有Capsule那一组
// 对比,为什么必能直接对欧拉角赋值
//欧拉角也叫万象解锁
void OnGUI() //创建的按钮程序
{
//"Q_X"是用四元数以自身坐标系进行旋转,避免直接用欧拉角--V_X绕着Z轴旋转
if(GUI.Button(newRect(20,20,100,80), "Q_X")) //四元数 //括号分别对应:x值,y值,按钮宽度,高度,20+80
{
Quaternion q = Quaternion.identity;
q.eulerAngles = newVector3(30, 0, 0);
transform.rotation = q *transform.rotation;
}
if (GUI.Button(newRect(20, 105, 100, 80), "Q_Y")) //105是上面的20+80+空隙5.可整齐排列
{
Quaternion q = Quaternion.identity;
q.eulerAngles = newVector3(0, 30, 0); //Y旋转
transform.rotation = q *transform.rotation;
}
if (GUI.Button(newRect(20, 190, 100, 80), "Q_Z"))
{
Quaternion q = Quaternion.identity;
q.eulerAngles = newVector3(0, 0, 30); //Z旋转
transform.rotation = q *transform.rotation;
}
//这个是直接赋值调用的欧拉角,直接用欧拉角--V_X绕着Z轴旋转
if (GUI.Button(newRect(125, 20, 100, 80), "V_X")) //125是上面的x轴20+100宽+缝隙得来的
{
transform.eulerAngles += newVector3(30, 0, 0);
}
if (GUI.Button(newRect(125, 105, 100, 80), "V_Y"))
{
transform.eulerAngles += newVector3(0, 30, 0);
}
if (GUI.Button(newRect(125, 190, 100, 80), "V_Z"))
{
transform.eulerAngles += newVector3(0, 0, 30);
}
}