示例#1
0
        public static Vector3 Raycast_addBlockOrigin(Player player, int interactions = 20)
        {
            // Initialize variables
            Vector3 destroyBlockOrigin = new Vector3(0, -1, 0);
            Vector3 directionRay       = Raycast.Ray_Direction(player);

            // Checking for interaction with blocks and direction vector
            int i; Vector3 calculatedOrigin;

            for (i = 0; i < interactions; i++)
            {
                calculatedOrigin = Chunk.getBlockOffset(player.camera.Position + directionRay * i);
                if (GameDictionaries.blocksDictionary.ContainsKey(calculatedOrigin))
                {
                    if (GameDictionaries.blocksDictionary[calculatedOrigin] != BlockType.Water)
                    {
                        destroyBlockOrigin = calculatedOrigin; break;
                    }
                }
            }

            if (destroyBlockOrigin != new Vector3(0, -1, 0) && i != 0)
            {
                return(Chunk.getBlockOffset(player.camera.Position + directionRay * (i - 1)));
            }
            else
            {
                return(destroyBlockOrigin);
            }
        }