unity3d物体移动、旋转和缩放的常用方法

物体移动:

1、

transform.Translate():位置,相对值,默认按自身坐标。

transform.position:位置,绝对值,按世界坐标。

2、刚体(Rigidbody)

MovePosition():位置,绝对值,按世界坐标。

velocity:速度,按世界坐标。

AddForce():添加力,按世界坐标。

AddRelativeForce():添加力,按自身坐标

3、角色控制器(CharacterController)

SimpleMove():速度,按世界坐标


物体旋转:

transform.Rotate():相对值,默认按自身坐标。

transform.Rotation:绝对值,为Quaternion类型,按自身坐标。Quaternion.Euler(0,0,5):欧拉角转换为四元数。

transform.eulerAngles:绝对值,按自身坐标。

transform.localEulerAngles:相对父元素,按自身坐标。


物体缩放:

transform.localScale:绝对值,按自身坐标。


方向从自身坐标转世界坐标:transform.TransformDirection()

方向从世界坐标转自身坐标:transform.InverseTransformDirection()

位置从自身坐标转世界坐标:transform.TransformPoint(),会受缩放影响

位置从世界坐标转自身坐标:transform.InverseTransformPoint(),会受缩放影响


屏幕坐标转世界坐标:Camera.main.ScreenToWorldPoint()

世界坐标转屏幕坐标:Camera.main.WorldToScreenPoint()


获取鼠标点击位置(屏幕坐标):Vector3 Input.mousePosition

获取触控点击位置(屏幕坐标):Vector2 Input.GetTouch(0).position


总结:

1、移动一般按世界坐标,旋转和缩放一般按自身坐标,特殊情况:

(1)transform.Translate()和transform.Rotate()默认按自身坐标,也可指定按世界坐标。

(2)AddRelativeForce()是按自身坐标。

2、位置、旋转、缩放一般为绝对值,力和速度一般为相对值,特殊情况:

transform.Translate()和transform.Rotate()为相对值。