Unity 旋转主要接口

一.Transform:

  1. eulerAngles:欧拉角
  • x,y和z角度分别表示围绕z轴旋转z度,围绕x轴旋转x度和围绕y轴旋转y度。
  • 不要增加它们,因为当角度超过360度时,它将失败。请改用Transform.Rotate。
  • 实践后没有实现
  1. LookAt:看向某一方向
  1. public void Rotate(Vector3 eulers, Space relativeTo = Space.Self):
  • 放在Update下面,持续旋转
  • 度数旋转
  • 欧拉旋转
  1. public void RotateAroundVector3 point, Vector3 axis,float angle):
  • 绕某点的某轴旋转,比如行星环绕
  1. rotation:存储一个四元数。您可以使用它来旋转GameObject或提供当前旋转。请勿尝试编辑/修改旋转。Transform.rotation小于180度。

二. Quaternion

  1. public static Quaternion LookRotation(Vector3 forward, Vector3 upwards = Vector3.up):
  • Z轴对齐forward,X轴对齐,forward和upwards的叉积
public Transform target;
void Update()
{
    Vector3 relativePos = target.position - transform.position;
    // the second argument, upwards, defaults to Vector3.up
    Quaternion rotation = Quaternion.LookRotation(relativePos, Vector3.up);
    transform.rotation = rotation;
}
  1. Quaternion.Euler
  • 围绕轴旋转n角度
 void Start()
{
        // A rotation 30 degrees around the y-axis
        Quaternion rotation = Quaternion.Euler(0, 30, 0);
}
  1. public static Quaternion Slerp(Quaternion a, Quaternion b, float t);
  • 在a和b之间进行球面插值。限制参数t在[0,1]范围内。
public class ExampleClass : MonoBehaviour
{
    public Transform from;
    public Transform to;

    private float timeCount = 0.0f;

    void Update()
    {
        transform.rotation = Quaternion.Slerp(from.rotation, to.rotation, timeCount);
        timeCount = timeCount + Time.deltaTime;
    }
}
  1. public static Quaternion FromToRotation(Vector3 fromDirection, Vector3 toDirection);
  • 创建从旋转fromDirection到的旋转toDirection。
  • 通常,您可以使用它来旋转变换轴.
void Start()
{
        // Sets the rotation so that the transform's y-axis goes along the z-axis
        transform.rotation = Quaternion.FromToRotation(Vector3.up, transform.forward);
}
  1. Quaternion.identity
  • 只读
  1. Quaternion.RotateTowards
  • from四元数旋转朝向to通过的角步骤maxDegreesDelta
  1. public static Quaternion AngleAxis(float angle, Vector3 axis);
  • 围绕axis轴旋转angle
  1. Quaternion.Angle
  • ?
public class ExampleClass : MonoBehaviour
{
    public Transform target;
    void Update()
    {
        float angle = Quaternion.Angle(transform.rotation, target.rotation);
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Unity中的欧拉角和四元数 笔记主要参考以下的博文 Unity中的欧拉旋转 - Andrew的游戏世界 - CS...
    一只浩阅读 5,540评论 0 0
  • 回顾一下四元数中的属性和方法。 属性: public Vector3 eulerAngles功能说明 此属性用来返...
    雨天到处晃阅读 12,171评论 0 8
  • 四元数介绍:【Unity技巧】四元数(Quaternion)和旋转 - CSDN博客 Quaternion类 Qu...
    向前ing_阅读 8,365评论 0 1
  • 任何游戏对象在创建的时候都会附带Transform组件,用于储存并操控物体的位置、旋转和缩放。 并且该组件是无法删...
    沉麟阅读 13,070评论 0 2
  • 物体移动:http://www.manew.com/thread-114623-1-1.html 一、Transf...
    苏黎九歌阅读 11,043评论 0 6