众所周知,游戏内看向太阳的时候通常会有光晕效果,特别是3D游戏内,比如这样的效果!
。
据我观察,cocos论坛目前还未有类似的讨论和实现,最近我做了一种简便易于扩展和修改的效果,趁着这次v7投稿,抛砖引玉,分享给大家。
1,先说原理,原理比较简单,用一个Node模拟定位一个太阳,然后将3D坐标计算到2D的canvas上,然后贴上几张sprite计算好位置就成了。
2,随便准备2张美术图片(也可以是多张,根据自己的美术项目需求来)这是我自己随手P的图片:![3349195374](/uploads/default/original/3X/4/4/440cb064f2c1b53394dd5d6ff57b008d0c512394.png)
![3874177049](/uploads/default/original/3X/9/a/9a16530b8f53c29a270ce34499b03fa04876b9e9.png)
3, 在编辑器内放置太阳和cavas图片,如图:![520704402](/uploads/default/original/3X/4/f/4f3e35e2260025cf53a66bfcda771d66b6232ca3.jpeg)
![3554057898](/uploads/default/original/3X/7/e/7e3cb386c1ec0738e842a6ad09f07a7ea1c50ce6.png)
4, 然后在update里面,计算太阳在2D屏幕内rect的位置,之后计算图片的位置(我这里就准备了2种光晕的图片),我这里就用了的圆形图片修改了颜色和大小;其实有很多不一样的光晕实现,有棱形的图片,也有辉光的太阳图片等等。这是核心代码:
![3809034020](/uploads/default/original/3X/d/a/da643941e39fbc30f5420eff5292723f54c42f93.png)
红框部分可以看出图片是平均分布的,其实不平均的效果会更好。
最后的效果:
![QQ20240508-210831-HD](/uploads/default/original/3X/0/f/0f11dd4746c02cb19114a265b6b3ab8b53d9e0a3.gif)
当然网上能找到其他更丰富的素材,例如:
思考:
1,如果有遮挡或者在屋内的情况就需要射线检测遮挡碰撞,这里就不讨论了。
2,3D空间转2D的 canvas位置还有一些其他类似情况,例如身后或者空中的怪物攻击自己时候屏幕有个位置标记的情况。
商店地址:https://store.cocos.com/app/detail/6231