我正在开发一个需要方向光的游戏想法(2D)。基本上,我想添加可以移动的光源,并使光线与场景中的其他物体相互作用。
目前我在进行一些测试,使用传感器(box2d)和ccDrawLine来实现类似于我想要的效果。基本上,我从某个点发送一堆传感器,在射线检测到碰撞时获取终点并在传感器上绘制直线。
只是想知道这是否是一个好的方法,或者是否有其他更好的选项来构建这样的内容?
此外,我想知道如何在该区域(传感器区域)产生光效果,以提供更好的外观效果。有什么建议吗?
我正在开发一个需要方向光的游戏想法(2D)。基本上,我想添加可以移动的光源,并使光线与场景中的其他物体相互作用。
目前我在进行一些测试,使用传感器(box2d)和ccDrawLine来实现类似于我想要的效果。基本上,我从某个点发送一堆传感器,在射线检测到碰撞时获取终点并在传感器上绘制直线。
只是想知道这是否是一个好的方法,或者是否有其他更好的选项来构建这样的内容?
此外,我想知道如何在该区域(传感器区域)产生光效果,以提供更好的外观效果。有什么建议吗?
我可以想到一种很酷的效果,你可以应用它。在光可见的区域内放置一些粒子,像闪烁的火花缓慢地落下,就像这张图片上的效果。
无论如何,任何解决这个问题的方法都需要使用碰撞检测,所以如果你只有有限数量的box2d对象,那么你的方法是相当不错的。
当你有大量的box2d对象时,我会考虑另一种方法,即将屏幕渲染成纯色的纹理(应该很快),并对生成的纹理进行光线追踪,以找到受光影响的像素。这样,你就受到分辨率的限制,而不是box2d对象的数量。
这里有一个关于2D空间中动态和静态光源的优秀源代码链接。 虽然是Ruby代码,但很容易理解,因此将其移植到Obj-C/Cocos2D/box2D应该不会花费太长时间。
我真心希望它能像帮助我一样帮助你。