Чи можу я порекомендувати спочатку працювати 2d тіні, навіть якщо це лише для того рівня, на якому зараз знаходиться ваш аватар. Буде простіше почати дивитися на код таким чином і змусити його працювати.
Я реалізував тіні на картах 2d плитки двома способами. Один метод затінення тіней, який я знайшов, описаний Еріком Ліппертом у Microsoft, працює досить добре.
І інший спосіб, який я робив сам вперше, коли я дивився на цю річ, полягав у тому, щоб ортогонально підмітати видимі плитки та кахлі, а також створити краї (а може бути, кути iirc), описуючи сцену з найменшою кількістю країв. Тоді ви можете скинути приховані краї та сформувати будь-які спеціальні функції затінення, такі як заглиблені тіні, якщо ви хочете показати трохи стіни. Потім створіть свою геометрію тіні (проекційне тіньове лиття?) Та візьміть її зверху.
Але якщо я спробую взяти цю ідею до 3d, це просто стане простіше зробити це в 3d. Хоча метод, описаний Еріком Ліппертом, імовірно, може бути перетворений в 3d. Але я думаю, ви побачите, що робити це в 3d дорого. Можливо, подивіться також вихідний код для Brogue . Це може мати більш ефективну реалізацію для 2d видимості / лиття в тіні.
Удачі.