unity绳子摆动为什么直接旋转了
1个回答
关注
展开全部
您好,unity绳子摆动为什么直接旋转了:1.物体的直接旋转transform.Rotate();这个函数是在当前状态下网某个方向旋转。并且这里可以设置为世界空间或者自身空间。transform.rotation;这里可以通过直接定义一个quaternion变量然后赋值。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,但是手动控制可以是任何值。
咨询记录 · 回答于2022-06-18
unity绳子摆动为什么直接旋转了
您好,unity绳子摆动为什么直接旋转了:1.物体的直接旋转transform.Rotate();这个函数是在当前状态下网某个方向旋转。并且这里可以设置为世界空间或者自身空间。transform.rotation;这里可以通过直接定义一个quaternion变量然后赋值。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,但是手动控制可以是任何值。
什么意思啊
旋转出错是因为物体的起始位置不正确 解决方法 给物体加一个空的父物体,使用父节点进行旋转不使用transform的right进行设置。
已赞过
评论
收起
你对这个回答的评价是?