【问题标题】:Move forward continously with a Character Controller?使用角色控制器不断前进?
【发布时间】:2014-03-08 16:45:45
【问题描述】:

我的问题总结了我正在尝试做的事情。

我搜索了互联网,每个人都给我通常的transform.Translate 答案,这对我不起作用,因为我需要物理和碰撞,而不仅仅是移动角色。

我知道如何使用 rigidbody 执行此操作,但我的角色一直在滚动,这是我不想要的。

【问题讨论】:

    标签: unity3d game-physics


    【解决方案1】:

    如果你的角色滚动,你可以冻结刚体上的一些旋转约束。

    无论如何,这里有一些来自角色控制器的脚本参考:https://docs.unity3d.com/Documentation/ScriptReference/CharacterController.Move.html

    据此,我想您可以根据需要进行调整。

    【讨论】:

    • 谢谢,我不知道这些限制。这确实解决了我的问题。
    【解决方案2】:

    使用 CharacterController 并使用它的 Move 和 SimpleMove 函数。查看默认字符包以了解更多信息,您也可以使用该包中的字符电机脚本。

    【讨论】:

    • 嗨,我在角色控制器中使用了 Move 和 SimpleMove 功能,但我不知道如何让我的角色不断向前移动。您能否指定我应该如何使用 Character Motor 脚本,因为脚本中的所有内容都与 Jumping 相关联。谢谢!
    • 字符马达脚本非常简单。你需要做的就是给它一个移动的方向,它就会朝那个方向移动。如果你不想跳跃,你可以禁用它。此外,要使用 SimpleMove,只需在每帧(在 update() 中)给它一个速度,它就会继续前进。不要使用刚体来移动角色,除非你的角色是物理的(比如一个球)。以后会出问题的。
    【解决方案3】:

    首先添加角色控制器组件创建一个名为 Move 的新脚本,然后打开它并复制并粘贴此代码

      #pragma strict
    
    function Update () {
    var Controller : CharacterController = GetComponent(CharacterController);
    var forward : Vector3 = transform.TransformDirection(Vector3.forward);
    Controller.SimpleMove(forward);
    }
    

    然后将脚本添加到您的播放器对象,然后您就完成了:)

    【讨论】:

      猜你喜欢
      • 2019-03-07
      • 2020-07-06
      • 2014-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多