【Unity】物体运动

本文介绍了在Unity中实现物体运动的各种方式,包括使用Transform、Rigidbody和动画组件。详细讲解了物体的前进、后退、旋转等运动形式,以及如何根据方向进行操作。特别讨论了面向摄像机转向、2D角色平滑转身和物体绕Y轴旋转等常见转向需求,涉及到向量的线性插值和角度转换等技巧。

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方向飞去,这个函数默认是按照物体
以下是一个简单的Unity物体运动轨迹代码示例: ```csharp public class MoveObject : MonoBehaviour { public Transform target; // 目标位置 public float speed = 1f; // 移动速度 private Vector3[] path; // 路径点 private int currentPoint = 0; // 当前点 void Start() { // 设置路径点 path = new Vector3[] { transform.position, // 起点 target.position // 目标点 }; } void Update() { // 判断是否到达目标点 if (transform.position == path[currentPoint]) { currentPoint++; if (currentPoint >= path.Length) { currentPoint = 0; } } // 计算移动方向和距离 Vector3 direction = path[currentPoint] - transform.position; float distance = direction.magnitude; // 移动物体 transform.Translate(direction.normalized * speed * Time.deltaTime); // 旋转物体 transform.rotation = Quaternion.LookRotation(direction); // 调试信息 Debug.DrawLine(transform.position, path[currentPoint], Color.red); } } ``` 这个代码将一个物体从它的起点移动到指定的目标点,并在路径上显示一个红色的线。该代码包括以下步骤: 1. 在Start()方法中,设置路径点为起点和目标点。 2. 在Update()方法中,判断物体是否到达目标点。如果到达目标点,则将当前点设置为下一个点,如果当前点已经是最后一个点,则将当前点设置为第一个点。 3. 计算物体需要移动的方向和距离,然后使用Translate()方法移动物体。同时,使用LookRotation()方法旋转物体,使其朝向移动方向。 4. 使用Debug.DrawLine()方法在路径上显示一条红色的线,以便调试。 这只是一个简单的示例,你可以根据你的需求修改代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值