【Unity】关于物体运动的一切(未完待续)

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度(注意是固定角度)

摄像机是否跟上

是否播放动画

猜你喜欢

转载自blog.csdn.net/qq_36622009/article/details/82755922
今日推荐