【QA】2018第5周

3D音效的代码逻辑

本问题来自Indienova的“陈康”

我也提个问题:到达一定距离或范围进行音效的播放设定的逻辑是怎样的?点A声源与点B玩家距离达到一定值然后控制音效播放的栗子.
请大家不吝赐教GMS2实现方法!

其实这个问题的关键就是检测两个点之间的距离,因此只需要使用内置函数即可
在点A声源的位置放一个管理音效播放的对象
对象里判断与玩家对象的距离就可以了吧

point_distance(x1, y1, x2, y2);

第一个点设置A的坐标,第二个点设置B的坐标
当这个距离小于等于你要的值就触发播放音效?
如果需要根据距离音量有大有小的话应该还可以持续计算这个距离然后把这个距离作为系数关联到播放音量上去
PS. GMS2内置函数里还有检测三维空间距离的函数——point_distance_3d(x1,y1,z1,x2,y2,z2)

图像着色问题

来自QQ群的“流贾君”问

image_blend = c_white的时候,为何看起来和原来一样- -
image_blend = c_red的时候,反而可以看到变成红色- -
求教一下怎么弄白色效果阿- -?

这个问题由QQ群里的"A-Yuri"给出了解释

image_blend是减量混合模式…取叠加值最暗的一个…白的是最亮的…怎么叠加都取不到它…除非源也是白的……你可以试试gpu_set_blendmode(bm_add)
记得用完恢复正常gpu_set_blendmode(bm_normal)

中文字体的问题

这不是一个人提的问题,但确实没想到居然还会有人提,因为之前曾经转过一篇教程了
大致来说在中文显示的问题上个人比较推荐使用外挂字体的方式,因为直接添加字体范围的话每次新增了文字都要重新添加还是有点麻烦,而且导入字体范围的时候很容易卡死。
使用font_add()即可添加外挂字体,外挂字体记得放到include file中
另外,如果用不上相应的字体时最好用font_delete()删除清理内存

global.xxx VS globalvar xxx

这也算是个小讨论吧,因为之前都是在用“global.xxx”这样的方式来声明全局变量
偶然间看到了globalvar xxx这样的格式。
根据官方文档的说明globalvar这种声明已经被弃用了,目前存在的意义主要是兼容老版本的代码,后续应该是不推荐使用的
另外使用这种声明出来的变量通过代码的颜色无法区分变量的类型
不过每次调用全局变量都要写global.xxx这样的前缀有时候会觉得有点繁琐
所以这个应该更多是使用习惯的问题,喜欢哪种形式见仁见智:)

2018-01-21 11:13
Comments
Write a Comment