/// <summary>
/// Braith原创,转载请注明
/// Unity版本4.5.1f3
/// </summary>
1、
打开Unity新建立Project名称为turnround
2、
场景中Create GameObject,分别创建一个Plane,一个Cube和一盏点光源。并将点光源Point light拖放到Cube下作为子物体,这样是为了移动Cube移动灯光一起移动。
纯粹是为了有个方向分辨而已=_=b。
3、
创建一个C#脚本turnroundScript.cs并将脚本拖到场景的Cube上。Cube添加一个刚体Rigidbody。这样测试时Cube就会降落到Plane上。
4、
turnroundScript.cs的代码如下:
using UnityEngine;
using System.Collections;
public class turnroundScript : MonoBehaviour {
private Vector3 _moveDirection = Vector3.zero;
private float _horizontalAxis = 0;
private float _verticalAxis = 0;
// Use this for initialization
void Start ()
{
}
// Update is called once per frame
void Update ()
{
_horizontalAxis = Input.GetAxis("Horizontal");//水平
_verticalAxis = Input.GetAxis("Vertical");//垂直
_moveDirection = new Vector3(_horizontalAxis, 0, _verticalAxis);
_moveDirection.Normalize();
this.transform.forward = Vector3.Slerp(transform.forward, _moveDirection, 0.5f);
}
}
比较简单的代码,主要看这一句:
this.transform.forward = Vector3.Slerp(transform.forward, _moveDirection, 0.5f);
transform.forward到_moveDirection,过渡速度是0.5f
this.transform.forward 指当前附加这个脚本的游戏对象的Z轴向。
Vector3.Slerp球形插值,或叫“弧线插值”更贴切。
API手册是这样描述的
Interpolates from towards to by amount t. The returned vector's magnitude will be interpolated between magnitudes of from and to.
通过t数值在from和to之间插值。返回的向量的长度将被插值到from到to的长度之间
static function Slerp (from : Vector3, to : Vector3, t : float) : Vector3
5、
点击测试,键盘WSAD键控制对象方向。
本实例unitypackage下载如下