您的位置:首页 > 移动开发 > Unity3D

有关lookrotate相关的数学四元数的知识(更新待定)

2017-11-02 16:28 225 查看

有关lookrotate相关的数学四元数的知识(更新待定)

最近在重新学人物的运动,之前学习的东西都是不加理解生硬的接受的,但是渐渐地懂得多了一点点以后觉得理解才是最重要的,所以开始记录一些当时不太理解的api的意义了

记录

Lookrotate :Quaternion.Lookrotate(前进的方向,轴);

往往我们会这么用:Quaternion.Lerp 差值运算出来我们的方向和前进的方向做一个渐变转向。

float sp_h = Input.GetAxis("Horizontal");
float sp_v = Input.GetAxis("Vertical");

if (Mathf.Abs(sp_h) > .1f || Mathf.Abs(sp_v) > .1f)
{
float newSpeed = Mathf.Lerp(anim.GetFloat("Speed"), 5.6f, moveSpeed * Time.deltaTime);
anim.SetFloat("Speed", newSpeed);

Vector3 tarDir = new Vector3(sp_h, 0, sp_v);
//将方向转换为四元数,相当于当前方向到(1,0,0)的方向差值,我懂了
Quaternion quaDir = Quaternion.LookRotation(tarDir, Vector3.up);
//缓慢转动到目标点
transform.rotation = Quaternion.Lerp(transform.rotation, quaDir, Time.deltaTime * rotateSpeed * 4);

}
else
{
float newSpeed = Mathf.Lerp(anim.GetFloat("Speed"), 0, stopSpeed * Time.deltaTime);
anim.SetFloat("Speed", newSpeed);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息