我正在写一个小瓷砖的游戏,我想为其支持的光源照亮。但是我的算法太弱,所以我来找你帮忙。计算可瓦片在基于区块的游戏(“光线追踪”)
的情况是这样的:有一个基于区块的映射(保持为2D阵列),其包含单个光源和若干项站在附近。我想计算哪些瓦片由光源照亮,哪些瓦片在阴影中。
大概是什么样的视觉辅助。 L是光源,X是阻挡光线的物品,0是点亮的瓷砖,而-s是阴影中的瓷砖。
0 0 0 0 0 0 - - 0
0 0 0 0 0 0 - 0 0
0 0 0 0 0 X 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 L 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 X X X X 0 0
0 0 0 - - - - - 0
0 0 - - - - - - -
小数系统甚至会更好当然,在一个瓦片可以在半阴影的,由于被部分遮蔽。该算法不一定非常完美 - 只是没有明显的错误和相当快的速度。
(当然,会有多个光源,但是这只是一个循环。)
赞成吗?
感谢您的所有答案。一旦我回家,我会详细介绍它们并实现/发布算法。 – Zarkonnen 2008-10-06 16:12:29
你有没有在这方面取得进一步的进展?我会很有兴趣听听你是怎么做的。 – 2008-10-14 14:00:37