马上注册,加入CGJOY,让你轻松玩转CGJOY。
您需要 登录 才可以下载或查看,没有帐号?立即注册
×
假设如下代码
vector3d Pos1;//一个角色位置
vector3d Pos2;/这个位置是在上面角色的后上方一点,用来形成一个从这个点到角色的向量
vector3d Dir=Pos1-Pos2;//这是一个向量,从角色后上方一点指向角色
现在要把场景中的camera从当前朝向也就是camera.transform.rotation转到上面那个方向上,以便使cmaera按指定的方向看着角色,这里不使用lookAt这个函数.
问题是怎么把Dir从vector3d向量有转为一个Quaternion,试了如下方式
Quaternion newRotation=Quaternion.Euler(Dir);
然后camera.transform.rotation=newRotation;//这种方式不能成功不知道是为什么
另外直接用camera.transform.forward=Dir;是可以的,但这种不能用于旋转插值
Quaternion.Slerp()需要两个Quaternion类型参数,
如何使newRotation成为有效的Quaternion呢,只有当newRotation有效才能进行旋转插值.
我不知道中途那个地方使用错误或者理解偏差了,求指教~~
另外关于Quaternion newRotation=Quaternion.Euler(Dir);这里的Dir是在代码里计算出来的并且后面的旋转尝试是失败了的,但当我在编辑器中把camera先摆放在想要旋转到的位置后,这时从属性栏里的Rotation里把三个值手动取出来后在代码里再组成一个vector3d向量Dir时,用这个Dir按上面的使用方式进行转换到Quaternion 是可以成功的,也可以正常的进行插值旋转.
不知道有谁遇到过这样的问题没,求解惑``` |