Unity3d transfrom组件
转自 https://www.imooc.com/learn/989
一、什么是transform
场景中的每一个物体都有一个transform
用于存储和操作对象的位置,旋转和缩放
存在层级关系(父级、子级)
二、常用变量和属性
1.位置
position 世界坐标
localPosition 相对坐标
inspector窗口 position显示的是相对坐标localposition 如果没有父物体则为相对于世界的坐标
2.角度
eulerAngles,localEulerAngles 欧拉角
rotation,localRotation 四元数旋转角度
rotation显示的是欧拉角 坐标为90即为旋转90度
3.缩放
localScale 相对父级缩放比例
lossyScale 相对世界缩放比例
Scale 显示的是localScale相对父级缩放比例
4.其他
right,up,forward方向向量
right 向右 up 向上 forward 向前
parent,root,childCount 子父级相关
parent 父物体 root根物体 childCount 子物体个数
三.移动
1.直接移动
修改tranform.position
private Transform trans; public bool moveToLeft = true; private float speed = 2; void Start () { trans = this.transform; } void Update () { MoveTest(); } //使物体在(-3,3)左右移动 private void MoveTest() { if (transform.position.x <= -3 && moveToLeft) { moveToLeft = false; } else if (transform.position.x >= 3 && !moveToLeft) { moveToLeft = true; } transform.position += (moveToLeft ? Vector3.left : Vector3.right) * Time.deltaTime * speed; }
2.使用Translate函数
private void Translate() { if (trans.position.x <= -3 && moveToLeft) { moveToLeft = false; } else if (trans.position.x >= 3 && !moveToLeft) { moveToLeft = true; } trans.Translate((moveToLeft ? Vector3.left : Vector3.right) * Time.deltaTime * speed,Space.Self); }
Translate函数第二个参数 Self沿自身的某一方向移动 World沿世界的某一方向移动
四.旋转
1.直接修改欧拉角和旋转角
void Update () { //trans.eulerAngles = new Vector3(0, 0, 45); //trans.localEulerAngles = new Vector3(0, 0, 45); //trans.rotation = Quaternion.Euler(0, 0, 45); //trans.localRotation = Quaternion.Euler(0, 0, 45); trans.eulerAngles += Time.deltaTime * speed * Vector3.forward; //trans.rotation = Quaternion.Euler(trans.eulerAngles.x, trans.eulerAngles.y, trans.eulerAngles.z + Time.deltaTime * speed); } }
2.几个关于旋转的函数
//绕某一轴进行旋转 trans.Rotate(Vector3.forward * Time.deltaTime * speed); //绕某一物体进行旋转 trans.RotateAround(target.position, target.up, Time.deltaTime * speed); //看向某物体 trans.LookAt(target);