我如何根据原点方向获得一组 3 个瓷砖的位置

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

我有一个角色可以对总是覆盖 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)。但是我的代码非常大,我觉得应该有一种更简单的方法来实现它。验尸官的瓷砖有点棘手

c# if-statement vector geometry tile
© www.soinside.com 2019 - 2024. All rights reserved.