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

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

【问题讨论】:

    标签: c# unity3d game-development


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        你可以这样做:

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

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

        逻辑

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

        语法

        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 路径
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多