uinty之物体移动的三大主流方法的区别

编程入门 行业动态 更新时间:2024-10-23 05:32:44

uinty之物体移动的<a href=https://www.elefans.com/category/jswz/34/1767861.html style=三大主流方法的区别"/>

uinty之物体移动的三大主流方法的区别

Transform组件
Rigidbody组件
CharacterController组件

Transform组件

用途:一般用于不需要模拟物体碰撞的移动,可以穿透其它物体
方法

  • Transform.Translate(Vector3,Space):这个方法有六个构造函数,可以以自身坐标系为参考移动Space.self,也可以以世界坐标系为参考进行移动Space.world。
 if (Input.GetKeyDown(KeyCode.W)){m_Transform.Translate(Vector3.forward,Space.world);}if (Input.GetKeyDown(KeyCode.S)){m_Transform.Translate(Vector3.back,Space.self);}

Rigidbody组件

用途:一般用于需要模拟物理碰撞效果的移动,如需要模拟物体间相互碰撞,摩檫力等
方法

  • Rigidbody.MovePosition(Vector3):这个干法只有一个构造参数,是以世界坐标系进行移动。参数表示移动后的位置,所以参数还需要加上自己所在的位置。
       if (Input.GetKeyDown(KeyCode.W)){//m_rig.MovePosition(m_Transform.position+ Vector3.forward);m_rig.AddForce(Vector3.forward*50, ForceMode.Acceleration);}if (Input.GetKeyDown(KeyCode.S)){//m_rig.MovePosition(m_Transform.position + Vector3.back);m_rig.AddForce(Vector3.back*3, ForceMode.VelocityChange);}
  • Rigidbody.AddForce(Vector3,ForceMode):世界坐标系,ForceMode里有四个属性,速度、加速度、力、冲击力,这个参数表示给物体以何种形式的力。
  • Rigidbody.AddRelativeForce(Vector3,ForceMode):和上面方法的用法一样,区别在于这个是自身坐标系。

CharacterController组件

用途:用于第一人称(游戏主角)和第三人称的具有人的行为的移动,可以模仿人的行为。
方法

  • CharacterController.SimpelMove(Vector3):移动较为简单,有重力。
  • CharacterController.Move(Vector3):移动较为复杂,没有重力
        float h = Input.GetAxis("Horizontal");float v = Input.GetAxis("Vertical");m_CC.SimpleMove(new Vector3(h, 0, v)*5);
这些物体的移动方法,它们本质就是在直接或间接的改变Transform的position

码字不易,觉得文章帮助到了你,给个赞呗!

更多推荐

uinty之物体移动的三大主流方法的区别

本文发布于:2023-07-28 18:41:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1277439.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:三大   物体   区别   主流   方法

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!