unity 3d 中的quaternion.Slerp的作用以及用法

来源:互联网 发布:淘宝上的闲鱼拍卖 编辑:程序博客网 时间:2024/05/02 23:30
<span style="font-family: Arial, Helvetica, sans-serif;"></span><pre name="code" class="csharp">using UnityEngine;using System.Collections;public class enemyAI : MonoBehaviour {public Transform target;public int moveSpeed;public int rotationSpeed;private Transform myTransform;void Awake() {myTransform = transform;}// Use this for initializationvoid Start () {GameObject go = GameObject.FindGameObjectWithTag ("Player");target = go.transform;}// Update is called once per framevoid Update () {Debug.DrawLine (target.transform.position, myTransform.position, Color.yellow);// look at targetmyTransform.rotation = Quaternion.Slerp (myTransform.rotation,Quaternion.LookRotation(target.position-myTransform.position),                                         rotationSpeed*Time.deltaTime);// move to targetmyTransform.position += myTransform.forward * moveSpeed * Time.deltaTime;}}


<span style="font-family: Arial, Helvetica, sans-serif;">忽略掉什么叫做四元数平滑插值这种复杂的概念,这个方法的意思其实就是:让初始点面朝目标点。第三个参数的意思是让初始点转多少度才能面朝目标点。参数意思是从from 的rotation慢慢旋转增值到to.rotation.以多少的角度旋转,把其中的值插到这个中间过程中,就是这个方法所要表达的意思。</span>
<span style="font-family: Arial, Helvetica, sans-serif;"></span>


官方文档上这么写的:

static function Slerp (from : Quaternion, to : Quaternion, t : float) : QuaternionDescription描述Spherically interpolates from towards to by t.球形插值,通过t值from向to之间插值。C#JavaScript// Interpolates rotation between the rotations// of from and to.// (Choose from and to not to be the same as// the object you attach this script to)//在from和to之间插值旋转.//(from和to不能与附加脚本的物体相同)var from : Transform;var to : Transform;var speed = 0.1;function Update () {transform.rotation = Quaternion.Slerp (from.rotation, to.rotation, Time.time * speed);}


0 0
原创粉丝点击