颠茄草

首页 » 常识 » 诊断 » 源码Unity实现塞尔达传说的砍
TUhjnbcbe - 2022/3/10 13:48:00
实现一个塞尔达的砍草--GameInteractivity

最近沉迷塞尔达,想实现一下里面的有趣的交互,先感谢一下

熊掌。本来想写两篇拿一篇水一下开放世界交互的各种有趣的(主要是可以水更多),但是感觉没人会看我瞎扯淡,那我就在后面放几个视频给大家娱乐一下。

先谈实现吧

UE的RT是可以直接通过材质绘制RT的,Unity也能通过Graphics.Blit来实现,如果自己写大概就是长这样:

思路就是砍草动作触发的时候把一个Mask变换位置写到一张世界RT上。

首先我们需要两张RT,一张作为dest一张缓存(Unity新CustomRenderTexture是有双重缓冲的,但是我还没玩透就自己实现算了,这里我为了体现流程没有写成PingPang,有需要的也可以开始你的表演),以玩家为中心点绘制Mask,再每次绘制的时候先由玩家的当前坐标减前一次绘制时的坐标得到移动方向,然后以此移动缓存RT的UV,这样UV超出此次采样时缓存的部分Mask就会被丢掉,但是得到的是一直跟随玩家的Mask。然后草地再以世界坐标XZ采样缓存RT,这样就完成了(很简单)。当然,草地受攻击高度选择采样这样的Trick使我们可以不用

1
查看完整版本: 源码Unity实现塞尔达传说的砍