将玩家绑定到路径 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的主要内容,如果未能解决你的问题,请参考以下文章
使用 Photon Unity Networking 向网络游戏中的特定玩家显示消息