2D Top Down Unity 游戏的跳跃功能?
Jump functionality for a 2D Top Down Unity game?
我正在努力寻找一种有效的方式让我的玩家在 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;
}
有没有人可以给我一些关于如何添加跳跃功能的提示? (最好有动画支持?)我有点 运行 没主意了。
提前致谢。
只是把它当作动画而已。因为它是自上而下的 2D,所以它看起来更像是在跳跃,然后如果它在跳跃动画中必须越过某些东西,那么就测试一下。
例如;如果正在播放过洞和跳跃动画,则允许整体移动,否则掉落。所以如果玩家按下跳跃按钮,动画就会播放,并且应该有一些变量存储玩家当前所在的动画。
我正在努力寻找一种有效的方式让我的玩家在 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;
}
有没有人可以给我一些关于如何添加跳跃功能的提示? (最好有动画支持?)我有点 运行 没主意了。
提前致谢。
只是把它当作动画而已。因为它是自上而下的 2D,所以它看起来更像是在跳跃,然后如果它在跳跃动画中必须越过某些东西,那么就测试一下。 例如;如果正在播放过洞和跳跃动画,则允许整体移动,否则掉落。所以如果玩家按下跳跃按钮,动画就会播放,并且应该有一些变量存储玩家当前所在的动画。