将玩家绑定到路径 Unity

Posted

技术标签:

【中文标题】将玩家绑定到路径 Unity【英文标题】:Bounding Player to path Unity 【发布时间】:2021-10-15 08:31:24 【问题描述】:

假设我有一条路径,可以是 Unity 中的一条线或一条曲线,我想让我的玩家捕捉到该路径并沿着它移动我将如何实现这一点。这看起来像是一个掩体系统,或者类似于 Sly Cooper 中壁架的工作方式。

【问题讨论】:

【参考方案1】:

如果您希望玩家的移动跟随路径,有一种称为WayPoint 的技术,它只是使用 Unity 中的内置导航系统。有很多文章教你如何手动构建这样一个航点系统,同时你可以从在线资产商店获得一个 SimpleWayPoint 模块。 但是如果你的播放器是由用户控制的,这意味着用户可以控制它的移动,比如说按下'W'按钮意味着向前移动,而按下'S'按钮意味着向后移动,并且左右移动受到你的路径的限制定义,不幸的是我没有找到任何成熟的技术可以让你意识到这个限制。 然而,在我几个月前完成的项目中,我手动处理坐标成功,因为我创建了一个街道严格遵守水平和垂直网格线的城市,我可以轻松控制目标游戏对象的X and Y coordinates,通过 使用内置冻结坐标 API在 Update() 方法中一遍又一遍地手动重置轴值。因此,也许您可​​以使用 Update() 方法通过使用表示路径的函数动态计算其坐标来约束目标的坐标,但我可以想象它会有多复杂。

【讨论】:

【参考方案2】:

您可以尝试使用 navmeshagent,一旦玩家想要使用此“自动移动”,它就会启用。在你的代码中你可以设置目的地,在你的场景中你可以创建一个导航网格,它可以是你喜欢的任何形状

【讨论】:

【参考方案3】:

你可以这样做:

    标记您不希望您的玩家向前移动/越线的位置。

    在您的脚本中,提及职位。

逻辑

如果,玩家位置 > 位置标记 然后停止运动,

语法

private void update()
    if(transform.position.x < -10)
    transform.position = new Vector3(-10, transform.position.y, transform.position.z); // Here you can either use `Vector3` or `Vector2`  according to your game
    

【讨论】:

所以我认为这解决了轴上简单线的情况,但不能解决更复杂的问题,例如曲线或 3d 路径

以上是关于将玩家绑定到路径 Unity的主要内容,如果未能解决你的问题,请参考以下文章

Unity 2D:玩家角色移动脚本

玩家跳跃高度不一致 - Unity

使用 Photon Unity Networking 向网络游戏中的特定玩家显示消息

Unity 3d PhotonEngine 其他玩家如何获取masterclient生成的数据

Unity 3D 使对象跟随玩家

UNITY3D:如何将 NavMeshAgent 行走速度设置为 0,但让他向玩家旋转