接下来, 要制作炸弹和爆炸效果
先来说炸弹, 其实不必给炸弹建 3D模, 因为炸弹是个球体。 球体的话, 不论哪个方向看都是圆形, 既然如此, 那用一个 PlaneShape() 上 texture ,然后再加个 Billboard() component 就可以了.
Billboard() component 可以让任何一个 entity 永远用正面对着camera 无论你的camera 从哪望向那个物件。
这个方法我个人觉得只适用于球体和字体。 如果不是球体或字体,例如人物, 那当你的camera 从上往下看时, 那个Projection 会看起来怪怪的。
接下来,为了让炸弹看起来生动, 需要给它加个呼吸的animation 。 是的, Bomberman炸弹是会呼吸的。因为会呼吸的炸弹看起来比较生动 。这个animation 要用 代码 完成。 基本上就控制 transform.scale 逐渐变大,再逐渐变小而已。
然后再讲 爆炸效果。
这个我也研究了一下后来发现, Decentraland 的 Material() 有 emissiveIntensity 和 emisiveColor 这两个属性可以让 material 发光。
所以就弄两个boxShape() 交叉 , 给 emissiveIntensity 调到 5.0 ,颜色放橙色就可以了。
至于爆炸要会被墙壁挡住, 这个要让 boxshape 从原点往四个方向上下左右 扩张到 max radius(2 格),如果撞墙就停, 还有一些比较复杂的数学让它align到正确的格子, 说来话长。。
炸弹和爆炸 基本上就完成了。
以后我有空在讲关于如何 用 pathfinder.js 来完成自动找路的过程,因为游戏必须用滑鼠左键和E 建而已。
原因是WASD 建是用来控制player avatar 的, Decentraland 无法直接 让 scene creator 去操控/变化任何玩家的main avatar 的任何东西包挂玩家 main avatar 的 position, 因为场景是被动的。
但是玩家的avatar 是可以和场景内带有collision mesh 的entity 有互动的。例如碰撞,或站在上面。例如电梯就是一个例子。
就如document 里说的:
就是说,如果玩家游戏死掉了, 场景creator 不能逼他/她滚出去。它的avatar 依然在场景里游走。
不过我猜想如果我create 一个有 collision mesh箱子,然后硬硬套住player 的avatar, 然后让这个箱子移动到 scene 的边缘, 是不是有可能可以锁住一个玩家的avatar的 位置。 画面一定相当搞笑。如果可以加入六个黑人去抬走这个箱子就更搞笑了。
话说回来, 最后还是让 main avatar 控制另一个game avatar 好了。反正我比较喜欢这种一个桌子一个桌子的概念。
题外话:
最上面那个 screen video cap 是用 vlc media player 里的 screen video capture 功能. 可能很少人知道VLC 不仅是个播放器, 居然可以做desktop video capture。不必下载多余的软件。
然后用 Blender 的 video sequence editor 去修正的。 Blender 真的太强大了, 不仅可以做3D ,有类似 Flash 的 2D 动画功能, 甚至还有类似 Premiere 的 Video Editing 功能。
反正学blender 是一举多得的事情。
谢谢阅读。