unity3d - 在 Unity 3D 中移动游戏对象的最佳方式

标签 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 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 步行/运行时,施加的力似乎对 memic 轮式车辆。

最佳答案

  • Rigidbody.MovePosition(m_Rigidbody.position + movement);

  • 从文档:

    If Rigidbody interpolation is enabled on the Rigidbody, calling Rigidbody.MovePosition results in a smooth transition between the two positions in any intermediate frames rendered. This should be used if you want to continuously move a rigidbody in each FixedUpdate. https://docs.unity3d.com/ScriptReference/Rigidbody.MovePosition.html


  • Rigidbody.AddForce(15 * Time.deltaTime, 0, 0, ForceMode.VelocityChange);

  • 这将使物体加速,因此它不会以恒定速度运动(这是因为牛顿第二定律,力 = 质量 * 加速度)。此外,如果你有另一个相反方向的力,这个力可能会被抵消,物体根本不会移动。
  • Transform.transform.position = playerTransform.position + cameraOffset;

  • 这将传送对象。没有平滑的过渡,没有与游戏中已有的任何力量互动,只是位置的瞬间变化。

    关于unity3d - 在 Unity 3D 中移动游戏对象的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54272462/

    相关文章:

    android - 在终端上使用命令在 unity 上构建 APK

    image - 在Unity中缩放 Sprite 时如何保持 Sprite 边框大小相同?

    algorithm - 在基于旋转的方向上移动时限制 x 和 y 跟踪的对象的最高速度

    javascript - 如何 .append() 一个对象

    c# - 这些代码在 c# 中的内存中是否安全?

    c# - Unity3d Swipe 跳转不是很灵敏

    c# - 从 C# 中的事件注销委托(delegate)时内存分配较高

    c# - Unity 3D 如何将 Vector3 投影到平面上或获取特定平面中两个 Vector3 之间的角度?

    ios - 如何在 cocos2d v3 上启用多点触控?

    java - 二维游戏物理 : Hitting a platform actor won't stop