好吧,我们进行一些改进的工作。 首先请美工帮帮忙吧。听说因为透视的存在,人眼看起来(或者是大脑感知的)东西总是近大远小的,好吧,这个不难,美工按照这个规则画画背景就好了,比如房间的地板不要画成矩形的,画成梯形,远端小,近端大,嗯,很像样子了,经过美工的一番改动之后,背景看起来很像那么回事了。 但是。。。但是。。。但是那个人踩到房间的墙上,或者总是踩在屏风前面而不是后面,这个也太过分了,依然不立体。怎么办?好吧,美工已经做过了努力了,不能再苛求他了,程序员来解决问题吧。首先是墙壁不能让人上去(不是每个人都是武功高手可以飞檐走壁的),在背景图的墙上设置一些逻辑的坐标点,定义为这些坐标点角色的图片是不可以渲染到那个位置上去的,如果坐标点越界了就把它“拉”回来,有了这个,在渲染Role图片的时候就比较真实了,小人走到墙壁的地方怎么走都走不上去了,他被“墙”挡住了。所以虽然是二维的一张图片,也有办法让它变得不平,这不,墙立起来了,人走不过去,于是大脑被欺骗了,认为哦,走不过去,真的那地方的墙是竖立着的,它比地面高,过不去,瞧平面逐渐变得“立体”起来了,我们开始第一步欺骗了大脑了对么。 那么“屏风”呢?它怎么办?好吧,找个人真的在屏风前后走动一下,看看它脚的位置和他被屏风的遮挡情况,哦,原来立体的屏风是这样挡住运动中的人的啊。好了,心里有数了。接下来程序员依然要努力。怎么办呢?好吧,仔细想想,为了让人显示在背景地板的上面我们曾经做过那些努力。哦,对了,是显示的先后顺序,我们先显示背景,后显示Role。这样看起来好像Role踩在地板上,Role在背景的上层后被渲染出来。等等~~刚刚说了什么了?“层”?!对啦,就是它,既然两层可以让Role“站”到地板上来,那么增加“层”也可以让“屏风”“站”到Role的前面去。于是有了想法后接下来就很好办了,把背景图片按照坐标划分为若干层。比如,地面墙壁所在的所有的坐标点都划分为第0层,Role被划分为第1层,背景图片上的屏风则被划分为第2层。渲染的时候顺序按照先0,再1,后2进行,这样人物如果出现在屏风所在坐标点上位置时候总是先于屏风被渲染的,屏风后渲染出来也就“遮挡”在了人物的“前方”了。这样人物的“立体”关系就正确了对么?这种遮挡的处理办法像极了PhotoShop中的图层的概念,只不过游戏重要实时的渲染出来而已。啊~~长出了一口气,不是么,我们再一次的利用大脑的常识去欺骗人类了,我们真的是坏透了,嘻嘻(捂嘴偷笑ing),有了遮挡,透视就更逼真了。哈哈,开心死了,这不是还是刚刚两张平平的图片么,怎么就那么立体了呢 但~~~~~~~~~~~~~~~~~~~~~~~~· 貌似还是不够完美,欠缺在哪里了呢?
|