Unity3d 在Unity 3D中移动游戏对象的最佳方式
我正在学习一些不同的Unity教程,每个教程中游戏对象的移动方式都有点不同 这些方法的优缺点是什么?第一人称RPG更喜欢哪种方法Unity3d 在Unity 3D中移动游戏对象的最佳方式,unity3d,game-physics,Unity3d,Game Physics,我正在学习一些不同的Unity教程,每个教程中游戏对象的移动方式都有点不同 这些方法的优缺点是什么?第一人称RPG更喜欢哪种方法 // Here I use MovePosition function on the rigid body of this component Rigidbody.MovePosition(m_Rigidbody.position + movement); //Here I apply force to the rigid body and am able to c
// Here I use MovePosition function on the rigid body of this component
Rigidbody.MovePosition(m_Rigidbody.position + movement);
//Here I apply force to the rigid body and am able to choose force mode
Rigidbody.AddForce(15 * Time.deltaTime, 0, 0, ForceMode.VelocityChange);
// Here I directly change a transforms position value, in this case the cam
Transform.transform.position = playerTransform.position + cameraOffset;
谢谢
编辑
我注意到的是,当位置改变时,施加的力似乎会影响memic轮式车辆行走/跑步
Rigidbody.MovePosition(m_Rigidbody.position+movement)代码>
Rigidbody.AddForce(15*Time.deltaTime,0,0,ForceMode.VelocityChange)代码>
Transform.Transform.position=playerTransform.position+cameraOffset代码>
这将传送该对象。没有平稳的过渡,没有与游戏中已有的任何力量的相互作用,只是位置的瞬间变化。刚体和速度/物理 我个人唯一一次使用rigidbodys系统是在实现我自己的(群集行为)时,因为您需要计算几个单独的向量并将它们全部应用到单元中
Rigidbody.MovePosition(m_Rigidbody.position + movement);
这将使用物理系统为您计算朝向目标的运动矢量,因此对象的速度和运动仍然会受到阻力、角度阻力等的影响
我相信这个特殊的函数是对刚体.AddForce的包装
优点:
- 如果现实的身体反应是你想要的,那就好了
- 如果您只想将一个对象从点A移动到点B,那么使用起来有点笨拙
- 有时,某个地方设置的错误设置太高(例如:Mass>10000000)可能会导致行为中的错误,这可能是一个很难确定和缓解的问题
刚体.AddForce
基本上与上面相同,只是你自己计算向量
举个例子,得到一个指向目标的向量
Vector3 target = target.position - myPosition;
Rigidbody.AddForce(target * 15 * Time.deltaTime, 0, 0, ForceMode.VelocityChange);
如果你不打算在游戏中加入任何主要的物理力学,我建议你通过插入物体的位置来移动
因为要让事情按照你想要的方式运行要容易得多,当然,除非你追求的是物理现实主义
插值单位位置
优点:
- 也许一开始理解起来有点奇怪,但要让对象按你想要的方式移动要简单得多
- 若你们想对影响你们的物体做出真实的反应,你们必须自己做很多工作。但有时,这比使用物理系统然后尝试更可取,正如我前面所说的驯服它李>
//change the characters x by + 1 every tick,
Transform.transform.position.x += 1f;