Unity 四元数和向量相乘
- position = rotation*Vector3(0.0, 0.0, -distance) + target.position;
这是相机环绕的一段代码,当时无法理解这是怎么实现环绕的,上网查找了一些资料之后终于明白了,特来记录一下。
Unity 里的rotation是四元数,四元数*向量 得到的是经过旋转后的向量, 例如 Quaternion.Euler(0,90,0) * vector3(0 , 0 , -distance) 得到的是 (-distance,0,0)
实际上就是把(0,0,-distance)绕着y轴旋转90度变成了 (-distance,0,0) ,在与目标位置相加后就能围绕目标环绕了
-
-
yaonan123
2017-09-15 23:07 1楼 -
还记得四元数乘以向量的问题吗?position = rotation*Vector3(0.0, 0.0, -distance) + target.position;
这样的到的positon是不固定的,改变distance的值,这样摄像机得位置就会发生变化,在开始的那一刹那,摄像机位置发生变化
-