当给一个目标点,如果目标直接去目标点我们可以直接让position指向目标点的position。
如果是转换输入呢?
举例:例如一个人物动画里有两个参数X和Y,X(- 1 ,1) 表示向左走和向右走,Y (-1 , 1) 向后和向前走。
如果我给一个目标点,如何计算应该给动画什么样的数值就可以呢。
其实很简单,我们首先计算目标点的向量。当自己人物有旋转的时候会发生变化。这时候可以使用 transform.InverseTransformDirection(dir)函数来将世界向量转成局部向量就可以了。
我们看看结果:
绿色球在前方的时候,计算出了 Z = 1
旋转自己后,目标改到前方,依旧是Z =1
测试代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class TestPoints : MonoBehaviour
{public Transform target;string showtxt;GUIStyle fontStyle = new GUIStyle();private void Awake(){fontStyle.normal.background = null; //设置背景填充fontStyle.normal.textColor = new Color(1, 0, 0); //设置字体颜色fontStyle.fontSize = 36; //字体大小}// Update is called once per framevoid Update(){Vector3 at = target.position;at.y = transform.position.y;Vector3 dir = (at - transform.position).normalized;Debug.DrawRay(transform.position, dir, Color.red, 1f);Vector3 moveInput = transform.InverseTransformDirection(dir);showtxt = moveInput.ToString("F2");}void OnGUI(){GUI.Label(new Rect(200, 200, 680, 50), showtxt, fontStyle);}
}
下面的GIF是转一周的Input数值变化。