Unity工具:
1.Transform
2.Rigidbody
3.动画
操作方式:
鼠标、键盘、(移动端:触屏)
axis、keys、mouse、button
运动形式:
前进、后退、旋转
方向、距离
方向:
Transfrom在世界空间中的方向,和角色的旋转有关:
- Transform.right:红轴(X)
- Transform.up:緑轴(Y)
- Transform.forward:蓝轴(Z)
Vector3的性质:up/down/right/left/forward/back。分别代表了对应的世界空间坐标系的单位向量。
关于转向常见需求:
1.使得物体始终面向摄像机:
把物体的forward方向设置为摄像机forward方向的负方向。
tipBoard.transform.forward = Camera.main.transform.forward;
transfrom.LookAt(Camera.main.transform);
2.胜利后,面朝左的2D角色向屏幕上方飞去,注意要平滑转身。
if (GameManager._instance.isWin)
{
transform.up = Vector3.Lerp(transform.up, Vector3.right,Time.deltaTime*8) ;
transform.Translate(Vector3.up*Time.deltaTime*5,Space.World);
}
- 最后向世界空间的up方向飞去,这个函数默认是按照物体坐标系来做的。
- 为什么是让transform的up方向转到世界空间的right方向呢,因为一开始就是这样的,角色是朝左的。所以要根据具体情况看目标转向。
- 平滑转身可以用三维向量的线性插值来做。
3.使得物体绕Y轴顺时针旋转90度:
transform.Rotate(transfrom.up*90);
transform.eulerAngles = new Vector3(0, 90, 0);
//将方向转换为四元数
Quaternion quaDir = Quaternion.LookRotation(Vector3.right, Vector3.up);
Quaternion quaDir2 = Quaternion.Euler(0,90,0);
//转动到目标点
transform.rotation = quaDir2;
4.自由视角下的人物旋转:
首先,按下左,立刻左转90度(注意是固定角度)
摄像机是否跟上
是否播放动画