Unity 3D - 旋转
2016-10-10 13:51
375 查看
方法1:物体绕Y轴旋转30度。
transform.rotation *= Quaternion.AngleAxis(30, Vector3.up);
或者
transform.localEulerAngles += new Vector3(0, 30, 0);
方法2:设置Y角度为30度。
transform.rotation = Quaternion.AngleAxis(30, Vector3.up);
或者
float x = transform.localEulerAngles.x;
float z = transform.localEulerAngles.z;
transform.localEulerAngles = new Vector3(x, 30, z);
方法3:让物体Y轴角度直接增加30度。
Quaternion qua = Quaternion.Euler(0f,30f,0f) * transform.rotation;
transform.rotation = qua;
方法4:让物体绕Y轴旋转30度。有旋转过程
Quaternion qua; public float RotationSpeed=0.1f;//旋转速度.
float t;
void Start ()
{
qua = Quaternion.Euler(0f,30f,0f) * transform.rotation;
}
void Update ()
{
t = RotationSpeed / Quaternion.Angle (transform.rotation, qua) * Time.deltaTime;
transform.rotation = Quaternion.Slerp (transform.rotation, qua,t);
}
方法5:让物体绕Y轴旋转面向一个点,有旋转过程
Quaternion targetRotation;
public float RotationSpeed = 50f;//旋转速度.
public Vector3 targetPoint;//要旋转面向的点.
void Start()
{
targetRotation = Quaternion.LookRotation(targetPoint - transform.position);
}
void Update()
{
this.transform.rotation = Quaternion.Lerp(this.transform.rotation, targetRotation, Time.deltaTime * RotationSpeed);
}
总结:
四元数A * 四元数B = B * A (满足交换律):将A(B)的旋转递增B(A)的旋转。
有过程的旋转,需要计算出目标的四元数,之后运用 Quaternion.Slerp 或者 Quaternion.Lerp
transform.rotation *= Quaternion.AngleAxis(30, Vector3.up);
或者
transform.localEulerAngles += new Vector3(0, 30, 0);
方法2:设置Y角度为30度。
transform.rotation = Quaternion.AngleAxis(30, Vector3.up);
或者
float x = transform.localEulerAngles.x;
float z = transform.localEulerAngles.z;
transform.localEulerAngles = new Vector3(x, 30, z);
方法3:让物体Y轴角度直接增加30度。
Quaternion qua = Quaternion.Euler(0f,30f,0f) * transform.rotation;
transform.rotation = qua;
方法4:让物体绕Y轴旋转30度。有旋转过程
Quaternion qua; public float RotationSpeed=0.1f;//旋转速度.
float t;
void Start ()
{
qua = Quaternion.Euler(0f,30f,0f) * transform.rotation;
}
void Update ()
{
t = RotationSpeed / Quaternion.Angle (transform.rotation, qua) * Time.deltaTime;
transform.rotation = Quaternion.Slerp (transform.rotation, qua,t);
}
方法5:让物体绕Y轴旋转面向一个点,有旋转过程
Quaternion targetRotation;
public float RotationSpeed = 50f;//旋转速度.
public Vector3 targetPoint;//要旋转面向的点.
void Start()
{
targetRotation = Quaternion.LookRotation(targetPoint - transform.position);
}
void Update()
{
this.transform.rotation = Quaternion.Lerp(this.transform.rotation, targetRotation, Time.deltaTime * RotationSpeed);
}
总结:
四元数A * 四元数B = B * A (满足交换律):将A(B)的旋转递增B(A)的旋转。
有过程的旋转,需要计算出目标的四元数,之后运用 Quaternion.Slerp 或者 Quaternion.Lerp
相关文章推荐
- unity3d鼠标滑动UIImage从而实现3D模型在UIImage上的左右旋转(RawImage映射)
- unity 3d中简单巧妙的实现拖动鼠标旋转物体
- Unity 3D:控制相机旋转、移动、缩放等功能
- [原]Unity手游之路 四 3d旋转-四元数,欧拉角和变幻矩阵
- Unity 3D鼠标操作实现旋转、缩放观察物体
- unity 3d 鼠标旋转物体脚本
- 【Unity 3D学习】获取鼠标滑动方向(上下左右)-控制摄像机围绕物体旋转
- 3d max 和 unity 3d 按轴旋转差别
- C#程序员整理的Unity 3D笔记(十):Unity3D的位移、旋转的3D数学模型
- C#程序员整理的Unity 3D笔记(十):Unity3D的位移、旋转的3D数学模型
- C#程序员整理的Unity 3D笔记(十):Unity3D的位移、旋转的3D数学模型
- 我的Unity 3D之旅——杂记之三种形式的旋转
- C#程序员整理的Unity 3D笔记(十):Unity3D的位移、旋转的3D数学模型
- [Unity] 3D数学基础 - 2D旋转矩阵
- Unity移动端手势操作——旋转3D物体
- Unity鼠标自由查看3D物体之直接旋转物体
- unity制作一个3d旋转菜单
- [转]Unity 3D旋转矢量方向及二维平面基于一点选择另一点(Rotate a Vector3 direction & Rotate a point about another point in 2D )
- Unity 3D 中实现对物体 位置(position) 旋转(rotation) 大小(scale) 的全面控制
- CSS 3D炫酷的 旋转魔方