gamemaker吧 关注:13,573贴子:94,181
  • 2回复贴,共1

【GMS2】官方俯视角人物墙壁后轮廓绘制范例流程解析

只看楼主收藏回复

官方俯视角人物墙壁后轮廓的绘制
首先咱们先来看看官方成品效果

Ok,敲黑板
完成这个效果的流程是这样的:
1、让我们注意一下下面这几个层(如图1)

图1
2、把每个需要绘制轮廓的对象(通常是人物和互动物品需要在墙后显示的东西)加入到OT_Create创建的数据库里,如在oPlayer绘制事件里看到的 OT_Add( id )。
Ps:官方做法是按房间高度每个像素行建立一个list,将需要绘制的对象放列表里。绘制的时候检测每个list,多达2304个!相当损耗资源的行为!
3、绘制Roofs
4、由oController_Silhouettes为每个在OT列表储存的对象绘制与之设定颜色相同的遮罩,这个颜色的遮罩在Roofs之上,shader在这里的作用也仅是为整个对象绘制一个纯色的遮罩,这时候看起来应该是这个样子(如图2)。

图2
5、由oMaskBegin 关闭 alpha通道,将所有Roofs 范围之外的图像全部抹除(如图3)就已经是我们想要的效果了。

图3
6、再绘制其他东西,就是我们现在看到的样子了(如图4)。

图4
Pss:顺带有一个官方自己都没注意到的bug,玩家人物向左的话,遮罩还是向右的。
Psss:人物会被墙壁遮住并不是做了什么特别的判断,而是因为屋顶和墙壁本身是分开的,Roofs层深度为400,永远优先于Instances深度1000前绘制。而墙壁本身walls深度为1500。


IP属地:广西1楼2021-08-22 12:04回复
    我觉得这个新手范例对新手非常不友好,绕死人。


    IP属地:广东来自Android客户端4楼2021-08-23 16:46
    收起回复