在Unity中的图块平台周围移动对象

问题描述 投票:0回答:2

我想使旋转的尖峰在由瓷砖制成的平台上移动,如以下enter image description here所示>>

我已经写了平台砖挡住尖峰的移动位置时的所有可能状态。它看起来像这样

     for (int i = 0; i < platformTileMap.Length; i++)
     {
         if (platformTileMap[i].HasTile(cellPosition + new Vector3Int(0, -1, 0))) // BOTTOM
         {
             moveX = moveDir;
         }
         else if (platformTileMap[i].HasTile(cellPosition + new Vector3Int(0, 1, 0))) // TOP
         {
             moveX = -moveDir;
         }
         else if (platformTileMap[i].HasTile(cellPosition + new Vector3Int(-1, -1, 0))) //BOT LEFT
         {
             if (moveDir == 1)
             {
                 moveY = -1;
             }
             else moveX = moveDir;
         }
         else if (platformTileMap[i].HasTile(cellPosition + new Vector3Int(1, 1, 0))) //TOP RIGHT
         {
             if (moveDir == 1)
             {
                 moveY = 1;
             }
             else moveX = -moveDir;
         }
         else if (platformTileMap[i].HasTile(cellPosition + new Vector3Int(1, -1, 0))) // BOT RIGHT
         {
             if (moveDir == 1)
             {
                 moveX = moveDir;
             }
             else
             {
                 moveY = -1;
             }
         }
         else if (platformTileMap[i].HasTile(cellPosition + new Vector3Int(-1, 1, 0))) // TOP LEFT
         {
             if (moveDir == -1)
             {
                 moveY = 1;
             }
             else
             {
                 moveX = -moveDir;
             }
         }

我觉得必须有一种更有效的方法来解决这个问题。我真的必须在if语句中写所有可能性吗?我可以通过寻路来实现吗?

我想制作一个旋转的尖刺以在由瓷砖制成的平台上移动,如下所示,当平台砖阻塞尖峰的方式时,我已经写了每种可能的状态,说明移动的位置。它...

unity3d path-finding tile
2个回答
1
投票

1
投票
© www.soinside.com 2019 - 2024. All rights reserved.