zoukankan      html  css  js  c++  java
  • Unity旋转问题的总结

    1.物体的直接旋转

    transform.Rotate();这个函数是在当前状态下网某个方向旋转。并且这里可以设置为世界空间或者自身空间。

    transform.rotation;这里可以通过直接定义一个quaternion变量然后赋值。

    transform.forward=dir;这里直接设置方向

    2.协同旋转

    首先定义父亲物体以z轴为轴心旋转,子物体以自身空间的x轴旋转,并且两者的旋转角度数要一致,或者有某种函数关系。此时如果用rotate会因为要使用deltaTime导致相当麻烦,所以这里用欧拉角构建quaterni变量赋值rotation。但是如果用quaternion会发现父亲物体和子物体的旋转会发生错误,因为子物体除了自身旋转还要应用父亲物体的旋转,所以为子物体构建由rotation01之后,用父亲物体的rotation02取乘以rotation01,即rotation=rotation02*rotation01,结果rotation才是子物体正确的rotation。注意这里的乘以顺序不能颠倒,不同的去看一百遍线性代数。

    3.旋转的角度值问题

    获取的欧拉角的值实在0到360度之间。vector3获得的两个向量的有符号角度是-180到180。inspector显示的角度值如果代码或者场景控制物体旋转,显示的时0到180,但是手动控制可以是任何值。

    4.获取一个四元数对应的方向

    dir=rotation*vector3.forward;//这里会获取到某个旋转对应的forward方向,而不必在一个transform上获取

  • 相关阅读:
    网络流入门
    Sereja and Swaps(贪心+暴力枚举区间)
    multiset
    欧拉路
    整除分块
    蓝魔法师
    选点
    F. Tree with Maximum Cost(换根)
    “db2执行sql语句,注释没了”的解决办法
    Mybatis中的自带Mapper方法
  • 原文地址:https://www.cnblogs.com/xiaoahui/p/10995578.html
Copyright © 2011-2022 走看看