• Unity脚本-Rotate旋转相关知识点


    1,Transform旋转

      transform.Rotate(X, Y, Z);//分别绕X,Y,Z轴旋转,可写为绕某个轴旋转,栗子transform.Rotate(0, 90, 0);
      transform.Rotate(Vector3.right * Time.deltaTime);//以欧拉角旋转,顺序是ZXY,right是向X轴旋转1度
      transform.Rotate(0, 45, 0, Space.World);//绕世界坐标系的XYZ轴旋转,也就是其顶层父物体的坐标系,如果自身在顶层则没有区别,并不是绕点旋转,而是不按照自身的坐标系旋转
      transform.Rotate(Vector3.up, Space.Self);//绕自身坐标系旋转,这是默认的
      transform.RotateAround(Vector3.zero, Vector3.up, 20 * Time.deltaTime);//绕点旋转,旋转轴,角度
      transform.rotation = Quaternion.identity;//旋转可由四元数直接指定
    transform.eulerAngles = new Vector3(angle);//由欧拉角直接指定
    自动旋转:
    在update中旋转并配合Time.deltaTime即可
     
    2.Quaternion四元数
    从以上可以看出我们既可以按角-轴旋转也可以根据向量计算出要旋转的角度
     
    平滑旋转:
    transform.rotation = Quaternion.Slerp (from : Quaternion, to : Quaternion,Time.fixedTime* smooth);
    Lerp插值比Slerp更快但是如果旋转较远看起来就比较差。
     
    注视旋转:
    Quaternion LookRotation(Vector3 forward, Vector3 upwards);
    创建一个旋转,沿着forward(z轴)并且头部沿着upwards(y轴)的约束注视。 也就是建立一个旋转,使z轴朝向forward,y轴朝向up。
    所得的结果是 以forward为目标朝向时的旋转角,用于控制角色旋转很有用
     
    3,刚体旋转
    rigidbody.MoveRotation (rot : Quaternion)
    对于运动学刚体,它基于刚体的运动应用摩擦力。模拟刚体的旋转。
    如果你想其他的刚体与运动学刚体交互,你需要在FixedUpdate函数中使用它。

    4,注视
    transform.LookAt (target : Transform, worldUp : Vector3 = Vector3.up) 
    旋转物体使z轴(forward)指向目标物体。
    当该物体设置了LookAt并指定了目标物体时,该物体的z轴将始终指向目标物体,在设置了worldUp轴向时,该物体在更接近指定的轴向是旋转便的灵活,注意worldUp指的是世界空间,不论你物体在什么位置,只要接近指定的轴方向,旋转会变的更灵活。
    5,DoTween旋转
    transform.DoLocalRotate();
    transform.DoRotate();//函数记不大清楚了,应该就这两个,不清楚的可以在查下
    unity中旋转rotation默认是以四元数存储的,按我们的习惯是欧拉角,通常需要将欧拉角转为四元数
  • 相关阅读:
    SQL SERVER中一些常见性能问题的总结
    【BZOJ2554】Color 概率神题
    【BZOJ1818】[Cqoi2010]内部白点 扫描线+树状数组
    【BZOJ1879】[Sdoi2009]Bill的挑战 状压DP
    【BZOJ2668】[cqoi2012]交换棋子 费用流
    【BZOJ4372】烁烁的游戏 动态树分治+线段树
    【BZOJ3470】Freda’s Walk 概率与期望
    【BZOJ2087】[Poi2010]Sheep 几何+DP
    【BZOJ4428】[Nwerc2015]Debugging调试 记忆化搜索+分块
    【BZOJ2137】submultiple 高斯消元求伯努利数
  • 原文地址:https://www.cnblogs.com/allyh/p/9418982.html
Copyright © 2020-2023  润新知