< 返回版块

eweca-d 发表于 2021-04-19 16:52

求教!最近无聊想用bevy写一个俄罗斯方块,但是在渲染方块这个步骤卡住了,实在没法搞了。

官方现在的例子大部分是载入点或者内置的shape,然后用sprite调整大小,这种办法没法用在俄罗斯方块上,因为每个Entity的形状都比较奇怪。我看到的例子(比如音游)是用png材质,然后用sprite调整大小,这个确实是可以的,但是我想把下面那座方块山写成一个Entity,这样的话总感觉很麻烦。

其实我最希望的是,把整块屏幕的数据(二维Vec,10 X 24)作为一个Entity,然后实时根据Vec的变化来渲染图形。这样有办法做到么?我能想到的最容易实现的方法就是用cube材质当成一个大的像素块,然后对数据Vec进行点对点渲染。相当于要生成240个Entity。但是总感觉是不是有点费CPU?

评论区

写评论
作者 eweca-d 2021-04-20 12:18

感谢回答!看了下,是有道理,但是有一个问题是在于游戏进行到中后部分,大部分屏幕还是充斥着实体,等同于还是要制造接近240个entities。而且比起频繁的spawn和despawn实体,或许一开始就spawn240个entities,并根据screen上有实体位置的分布来动态调整这240个entities的材质(没有方块的地方是空白的颜色材质,有方块的地方可以是单一的颜色材质或者是根据原方块形状保存颜色材质),这样性能更高些。

--
👇
johnmave126: bevy-tetris

可以考虑把每个非空块作为一个entity

作者 eweca-d 2021-04-20 12:08

感谢回答。确实大材小用,我会的里面最简单的办法是直接WEB搞个CANVAS就好了。但是我就是最近有空,单纯想试试BEVY,然后挑选了一个简单的游戏想试试水罢了。

--
👇
phper-chen: 这种的根本就不需要用bevy 一个前端js就都能做 web版的坦克大战很多人都会用js做 而且不是一类东西 布局成固定的方格 按坐标显示和隐藏路径就可以了 方块的组合是有限的 状态也是有限的

johnmave126 2021-04-20 11:18

bevy-tetris

可以考虑把每个非空块作为一个entity

phper-chen 2021-04-20 10:04

这种的根本就不需要用bevy 一个前端js就都能做 web版的坦克大战很多人都会用js做 而且不是一类东西 布局成固定的方格 按坐标显示和隐藏路径就可以了 方块的组合是有限的 状态也是有限的

1 共 4 条评论, 1 页