专栏首页游戏开发之旅Unity3D 物体移动方式总结

Unity3D 物体移动方式总结

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • cocos creator鼠标键盘事件总结

    最近忙着新项目,要着手学习Cocos Creator,翻遍网上资料,做一下总结,下面是我觉得写的不错文章,不用再去官网一个个查阅了,后期再遇到相关的知识在这篇文...

    bering
  • c语言API查询

    说明: 1、这个软件超级棒,是实时更新的,自己在用那种编程语言,就下载那种即可,下载后就可以离线查看。 2、此软件是基于Qt5设计的,全开源,可以在Linu...

    bering
  • js中数组的sort()方法排序

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    bering
  • CS学习笔记 | 14、powerup提权的方法

    利用 PowerUp 进行提权需要首先导入 ps1 文件powershell-import PowerUp.ps1,再执行powershell Invoke-A...

    TeamsSix
  • 看完这篇Python操作PPT总结,从此使用Python玩转Office全家桶就没有压力了!

    今天本文将基于第三方库pptx,详细讲解如何使用Python操作Office全家桶最后一位——PPT。

    刘早起
  • 工作记录二: 记录一次简单的SQL优化过程

    对应的controller方法如下,可以看到该方法将request的storeId设置为空, 下面又调用listCateByStoreId()方法, 我们可以通...

    时间静止不是简史
  • ModelSim的安装、破解、使用(缩放算法仿真)

    Modelsim是一款专业仿真软件,有se、de、pe等多个版本,拥有操作简单、编译速度更快、效率更高的特点,小编为大家整理了软件的安装和破解教程。

    瓜大三哥
  • keras中文文档

    Keras是一个极简和高度模块化的神经网络库,Keras由纯Python编写而成并基于Theano或Tensorflow。Keras 为支持快速实验而生,如果你...

    用户1908973
  • “Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.4.1:clean (default-clean) on..

    IT云清
  • ARKit示例 - 第3部分:添加几何和物理乐趣

    在上一篇文章中,我们使用ARKit来检测现实世界中的水平平面,然后将这些平面可视化。在本文中,我们现在将开始为我们的AR体验添加虚拟内容,并开始与检测到的平面进...

    iOSDevLog

扫码关注云+社区

领取腾讯云代金券