我正在努力寻找一种有效的方法让我的玩家在 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;
}
有没有人可以给我一个关于如何添加跳跃功能的提示?(理想情况下有动画支持?)我有点没有想法了。
提前致谢。