【聚光灯开发者日志3】关于游戏机制的思路
HI!这里是XDLYY小队的成员牢理。(牢理幻想真好玩,路易帅的,)
经过前段时间的开发,完成了游戏中的灯光机制。
灯光核心功能是做检测,检测进入灯光的对象是什么。这个还是比较简单的,只需要利用射线检测。不过在检测之前需要判断有没有物体进入。这里的思路是给光源创建一个触发器,当物体进入触发器时先获取一个光源到物体的光到物向量;
通过判断光到物向量与光源法向量所构成角度是否在光源外角范围内决定是否发出一个由光源指向物体的射线。满足发射射线条件后,还需进一步作处理,即只获取射线检测到的第一个物体,并判断该物体是否是指定的对象。确认检测对象为指定物体后向对象发送信息,表示该物体被光照射。此外因为游戏中可能存在改变光源内外角和内外径的情况,不过这个较为简单,只需要绑定光源内外径和触发器半径即可。
另一个功能是关于光与光之间的传播,就是当两个光源的光线会重叠时,一个光的状态会影响到另一个光的状态。说实话,这个我思考了一会,发现有些难处理。
假定有两个光源A和B。
第一个思路是获取A,B光源外径上的边界坐标,当A光源的两个坐标中任一个与B光源法向量的夹角在B光源的外角内,都算A,B光源重叠。一斤鸭梨!!请看下图
第二个思路是获取A光源照射到地面的一组地面坐标,通过B坐标与这组地面坐标作角度判断是否在B的外径内进而判断A,B光源是否重叠,但是想了想这需要计算的东西是否有点太多了;然后随着光源角度的变化有些光不一定会打到地面上,这些坐标该如何获取又是一个难题。可恶,能力不够,只能放弃这个思路了吗。
最后一个思路只能说是一个投机思路了,专门设置一个检测点,如果A,B都能照射到该检测点,那么就算这两个光重叠。如果一个检测点不够,可以多加几个。不过还是尽量少加。这个思路就需要关卡策划好好## 设计检测点和光源的位置了(是的,毕竟优秀的设计能力也是策划的一环,总不能都让程序负重前行不是吗)
好了,以上就是这段时间开发的大致了,该去牢理幻想了,下次见