我想这里的人可能会对我上一次发表的流动水效果的片段感兴趣。我的游戏“Rangefinder”采用等距视角,玩家可以在各种不同的地形中徒步旅行。然而,这也引出了一个问题,因为树木会遮挡玩家的视线。已经实现了一种解决方案,即使用轮廓效果的片段,显示玩家的位置当他们被遮挡时。但是,当玩家在森林中行走时,这种方法变得很乏味。
所以,在这个周末,我制作了一个新片段,通过树木遮挡视线时,创建一个“望远镜”效果。这是通过在片段中测量像素到玩家位置的距离来实现的,使用“gl_Fragcoord”值。然而,我发现这看起来太过艺术化了,所以我添加了一个生成细胞噪声纹理,模拟叶片在望远镜边缘的运动。这有助于改善效果,但我还进行了动态隐藏和显示树木的前后位置的操作。通过在片段中进行透明度抖动,这有助于匹配像素艺术风格。
这很不错,但随后我意识到树木需要在他们下方投下的阴影,以提供阴暗的森林地板效果。所以,我想出了一个新的方法,来添加阴影到草地顶点缓冲区和地板顶点缓冲区。通过创建一个表面,我绘制阴影到这个表面,并将它作为纹理样本传递到一个新的阴影片段。这个片段引用阴影纹理样本来决定是否要对该顶点进行阴影处理。这个操作需要协调屏幕坐标(gl_Fragcoord)和纹理坐标(v_vTexcoord),这确实是一个麻烦的问题,但最终还是成功了。同样,我使用了同样的生成细胞噪声纹理,来模拟地板上的叶片运动的阴影。
接下来,我需要添加的功能是,允许在精灵下方的对象进入/退出阴影状态。目前,我只处理了“草”顶点缓冲区(包括草、蕨类植物、花朵和蘑菇在内),这些也会随着玩家行走而改变阴影和形状。然而,对象则被处理为单独的实例,玩家可以在IDE中放置它们。
如果你对我的游戏“Rangefinder”感兴趣,请查看我的itch io页面(https://rangefinder-game-dev.itch.io/rangefinder),我在那里发布开发更新。最近,我展示了第一版的战斗系统,它也包括了很多自定义Gamemaker片段,用于效果如暴击和其他。
评论 (0)