1. 简介

在unity3d中,有多种方式可以改变物体的坐标,实现移动的目的,其本质是每帧修改物体的position。

2. 通过Transform组件移动物体

Transform 组件用于描述物体在空间中的状态,它包括 位置(position), 旋转(rotation)和 缩放(scale)。 其实所有的移动都会导致position的改变,这里所说的通过Transform组件来移动物体,指的是直接操作Transform来控制物体的位置(position)。

2.1 Transform.Translate

该方法可以将物体从当前位置,移动到指定位置,并且可以选择参照的坐标系。 当需要进行坐标系转换时,可以考虑使用该方法以省去转换坐标系的步骤。

public function Translate(translation: Vector3, relativeTo: Space = Space.Self): void;

2.2 Vector3.Lerp, Vector3.Slerp, Vector3.MoveTowards

Vector3 既可以表示三维空间中的一个点,也可以表示一个向量。这三个方法均为插值方法, Lerp为线性插值,Slerp为球形插值, MoveTowards在Lerp的基础上增加了限制最大速度功能。 当需要从指定A点移动到B点时,可以考虑时候这些方法。

2.3 Vector3.SmoothDamp

该方法是可以平滑的从A逐渐移动到B点,并且可以控制速度,最常见的用法是相机跟随目标。

2.4 Transform.position

有时重新赋值position能更快实现我们的目标。

3. 通过Rigidbody组件移动物体

Rigidbody组件用于模拟物体的物理状态,比如物体受重力影响,物体被碰撞后的击飞等等。

注意:关于Rigidbody的调用均应放在FixedUpdate方法中,该方法会在每一次执行物理模拟前被调用。

3.1 Rigidbody.velocity

设置刚体速度可以让物体运动并且忽略静摩擦力,这会让物体快速从静止状态进入运动状态。

3.2 Rigidbody.AddForce

给刚体添加一个方向的力,这种方式适合模拟物体在外力的作用下的运动状态。

3.3 Rigidbody.MovePosition

刚体受到物理约束的情况下,移动到指定点。

4. 通过CharacterController组件移动物体

CharacterController用于控制第一人称或第三人称角色的运动,使用这种方式可以模拟人的一些行为,比如限制角色爬坡的最大斜度,步伐的高度等。

4.1 CharacterController.SimpleMove

用于模拟简单运动,并且自动应用重力,返回值表示角色当前是否着地。

4.2 CharacterController.Move

模拟更复杂的运动,重力需要通过代码实现,返回值表示角色与周围的碰撞信息。

最新文章

  1. 浅谈android中的目录结构
  2. 深入理解http/https协议
  3. MXNet学习~第一个例子~跑MNIST
  4. Oracle 11g系列:视图
  5. (笔记)angular 单选选项卡
  6. .NET和JSON
  7. [转]flume-ng+Kafka+Storm+HDFS 实时系统搭建
  8. fbset视频参数说明
  9. UIImage+Scale
  10. 每日java基础知识(01)
  11. 【机器学习】彻底搞懂CNN
  12. intelliJ idea如何安装、配置
  13. GraphQL 是什么
  14. 【SMTP】常见错误码
  15. Cracking The Coding Interview3.3
  16. Spring boot实现自定义拦截器
  17. BZOJ5302 HAOI2018奇怪的背包(动态规划)
  18. JS日期与字符串相互转换!!
  19. HawkHost退款流程详解
  20. C指针(4)——数据结构中指针的应用(非常重要)

热门文章

  1. C++ 类声明 类前置声明范例
  2. Win7怎样禁用自带IE浏览器
  3. mySQl数据库的学习笔记
  4. BotVS趋势交易策略-MACD
  5. jQuery ajax error函数(交互错误信息的获取)
  6. pythonl练习
  7. Error Handling in ASP.NET Core
  8. Bash 脚本进阶,经典用法及其案例
  9. unity3d在菜单栏,一键设置Player setting及自动打包并设置apk的存储位置
  10. oracle12之 多租户容器数据库架构