【问题标题】:How to move player from one mesh to another in the Navmesh如何在导航网格中将玩家从一个网格移动到另一个网格
【发布时间】:2020-03-10 14:13:54
【问题描述】:

我试图让我的玩家从另一个网格中激活的触发器传送到网格中的一个点,更具体地说是在天花板上。我试过这个,但它让我把玩家留在了他已经在的网格的一个角落里。

void OnTriggerEnter(Collider other)
{
    if (other.gameObject.CompareTag("Player"))

    {
        _playerPrefab.transform.position = _initialposition.transform.position;
    }
}

【问题讨论】:

  • _playerPrefab 是在哪里定义的?什么是_initialPosition?您的命名约定在这里有一些令人困惑的事情。你永远不应该移动预制件(预制件是一个“模板”,而不是一个活的游戏对象)。我也觉得奇怪的是你 _initialPosition 还不是一个向量(因此是“位置”)。
  • [SerializeField] private GameObject _playerPrefab;
  • _初始位置是我想去的地方,是一个变换。抱歉,玩家正在游戏中
  • 有一个搜索,你可以将网格链接在一起,你不需要专门移动它,你会使用一个网格链接
  • 那会怎样?可以给我看看吗?

标签: unity3d collider navmesh


【解决方案1】:

如果你想使用 NavMesh API,你的玩家需要有一个 NavMeshAgent。

那你可以直接拨打yourAgent.SetDestination(yourDestination)

【讨论】:

    【解决方案2】:

    最后我能够通过使用 tranform.position 更改位置、禁用 navMesh 代理并将速度设置为零来解决它。

    【讨论】:

      【解决方案3】:

      尝试使用 NavMesh 代理提供的 warp 功能:

      _playerPrefab.GetComponent<NavMeshAgent>().Warp(_initialposition.transform.position)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-08
        • 1970-01-01
        相关资源
        最近更新 更多