0

我正在努力寻找一种有效的方法让我的玩家在 2D Top Down 世界中跳跃。我可以看到很多关于平台游戏视图的教程,其中相机朝向玩家的一侧,但对于像 startdew Valley 这样的自上而下视图来说,没有什么真正有用的。

我没有使用物理,所以我使用 Couroutine 移动瓷砖地图上的角色,它将玩家移动到网格上的下一个位置,这是我的 Update 和 DoMove 方法:

    private void Update()
    {
        if (!isMoving)
        {
            input.x = Input.GetAxisRaw("Horizontal");
            input.y = Input.GetAxisRaw("Vertical");

            if (input.x != 0)
                input.y = 0;

            if (input != Vector2.zero)
            {
                animator.SetFloat("Horizontal", input.x);
                animator.SetFloat("Vertical", input.y);

                var targetPos =  transform.position + new Vector3(input.x, input.y, 0f);

                // obstacle detection
                Vector3Int obstaclesMapTile = obstacles.WorldToCell(targetPos - new Vector3(0, .5f, 0));

                if (obstacles.GetTile(obstaclesMapTile) == null)
                {
                    StartCoroutine(DoMove(targetPos));
                }
            }

            animator.SetFloat("Speed", input.sqrMagnitude);
        }
    }



    private IEnumerator DoMove(Vector3 newPos)
    {
        isMoving = true;

        while ((newPos - transform.position).sqrMagnitude > Mathf.Epsilon)
        {
            transform.position = Vector3.MoveTowards(transform.position, newPos, moveSpeed * Time.fixedDeltaTime);
            yield return null;
        }

        transform.position = newPos;
        isMoving = false;
    }

有没有人可以给我一个关于如何添加跳跃功能的提示?(理想情况下有动画支持?)我有点没有想法了。

提前致谢。

4

1 回答 1

1

只是把它想象成动画。因为它是 2D 自上而下的,所以它看起来更像是在跳跃,然后如果在跳跃动画中它必须越过某些东西,那就测试一下。例如; 如果正在播放过洞和跳跃动画,则允许在整体上移动,否则会摔倒。因此,如果玩家按下按钮进行跳跃,动画就会播放,并且应该有一些变量存储玩家当前所处的动画。

于 2022-02-06T15:34:49.850 回答