阅读更多
过年把Where is my water完了一遍,对这个游戏的创意和算法有一点赞叹.
于是琢磨了一下游戏算法上的实现,最大的难点是对水流、毒水、绿色的[不知道什么东西],这三种液体的处理,以及液体与各种物体之间的碰撞.
底层一定是一个物理引擎,而对各种不同的液体,可能有属性上的不同,比如粘性[可以在碰撞判断时,反弹一定影响,粘性大,反弹力度小,如果撞击力度过小,则直接粘在一起],伸缩性[用来判断边界,与其他物体之间碰撞检测,用于进行图形的绘制,如果伸缩性大,外层碰撞则绘制整体的水,如果内层碰撞则挤压],有摩擦力属性,等
比较头疼的就是对水流的绘制,如果没滴水是一个图形,如何绘制能使得多个水底聚在一起时,显示成一片水,而不是一些水滴.
我的思路是借助碰撞检测的数据,对于水滴有2层外壳,外层负责绘制,内层负责碰撞检测,不能重叠,外层可以重叠,在周期绘制时,对于水滴的数组进行遍历,外层重叠的部分,mask水,外层不重叠的部分,直接绘制水滴,不透明.对于mask的部分,进行背景的虚化及活动处理,产生液体活动的影像..
-----------------------------------------
个人思路,有没有回帖讨论的同学.