我有一个角色可以对总是覆盖 3 个方块的网格进行攻击,这些方块的位置应取决于角色的位置。我想知道是否有更简单/不重复的方法来执行此代码(我知道 switch 语句,但这不是我担心的)
Vector3Int fromPoint = Vector3Int.zero;
Vector3Int direction = Vector3Int.RoundToInt(Vector3.Normalize(atPoint - fromPoint));
retiacalTiles.Add(atPoint);
if (direction == Vector3Int.up)
{
retiacalTiles.Add(atPoint + Vector3Int.left);
retiacalTiles.Add(atPoint + Vector3Int.right);
}
if (direction == Vector3Int.up + Vector3Int.right)
{
retiacalTiles.Add(atPoint + Vector3Int.left);
retiacalTiles.Add(atPoint + Vector3Int.down);
}
if (direction == Vector3Int.right)
{
retiacalTiles.Add(atPoint + Vector3Int.up);
retiacalTiles.Add(atPoint + Vector3Int.down);
}
if (direction == Vector3Int.right + Vector3Int.down)
{
retiacalTiles.Add(atPoint + Vector3Int.left);
retiacalTiles.Add(atPoint + Vector3Int.up);
}
if (direction == Vector3Int.down)
{
retiacalTiles.Add(atPoint + Vector3Int.left);
retiacalTiles.Add(atPoint + Vector3Int.right);
}
if (direction == Vector3Int.left + Vector3Int.down)
{
retiacalTiles.Add(atPoint + Vector3Int.right);
retiacalTiles.Add(atPoint + Vector3Int.up);
}
if (direction == Vector3Int.left)
{
retiacalTiles.Add(atPoint + Vector3Int.up);
retiacalTiles.Add(atPoint + Vector3Int.down);
}
if (direction == Vector3Int.left + Vector3Int.up)
{
retiacalTiles.Add(atPoint + Vector3Int.right);
retiacalTiles.Add(atPoint + Vector3Int.down);
}
我在这里发布的代码按预期工作。(稍后我将从 Point 更改为 character'Pos)。但是我的代码非常大,我觉得应该有一种更简单的方法来实现它。验尸官的瓷砖有点棘手