【QA】2017第50周

娃快满月了,精力越来越旺盛,折腾指数也直线上升,伤不起啊伤不起😂
本周问问题的朋友不多,所以这次QA里的问题有些是以前有朋友问过,也找来凑个数:D

导入带状图

前两个问题都来自B站的“我在広电玩泥巴
在Unity之类的引擎中是可以直接导入长条状的精灵图像的,通常都是一个动画的分解图像,而GMS中当然也可以,如果有看过HB的教程,应该会发现他里面就用了这样的图形,但有的朋友会奇怪用HB项目里的资源好像直接把图像拖进编辑器就自动分解了,但自己准备的图像就不行。

在GMS2中要导入这种带状图有两个方法:
1、给图片重命名,必须以“stripX”结尾,其中“X”是图片要分割的数量(HB的素材就是这样操作的)
2、在进入图像编辑器以后从菜单中选择导入
[]
然后根据你的图像设置相应参数导入即可
[]

如何定义鼠标指针图标

有很多游戏里的鼠标指针都是自定义的样式,在GMS中同样有这样的一个函数

cursor_sprite

使用这个方法就可以直接给鼠标制定一个精灵图像来自定义了

暂停画面的缩放问题

这个问题来自B站的“蟑螂侠OL
他在使用之前介绍过的用截图来展示暂停游戏画面的方法时,画面中出现的是整个游戏屏幕内容的左上角1/4区域的内容。
其实之前也有朋友在微信后台问过我这个问题,当时我觉得应该是游戏画面和实际画面哪里有个1:2的缩放关系,但是当时没有后续的交流所以不了了之了,这次拿到了工程文件所以定位到了问题所在。
在HeartBeast的2D射击游戏教程中,我们曾经修改过camera的画面显示比例,如下:

我们的画面实际是640x360的,但我们在Viewport属性上设置成了1280x720,使得游戏在启动时的实际画面变大了,因此在使用application_surface获取图像时获取到的是一张1280x720的图片,然后我们把这个图片放进640x360的场景里就会只显示左上角的一块了。
所以在贴图的时候需要缩放处理,把“draw_sprite”方法改为“draw_sprite_ext”,后者可以自定义的属性更多,包括横纵向的缩放比,我们把两者都设为0.5即可。

draw_sprite_ext(global.screen_pic,0,0,0,0.5,0.5,0,c_white,1)

在微信后台有朋友提醒同时也要在 sprite_creat_from_surface里面的room_width和room_height改为1280和720 这样暂停才是完整的画面

这样就可以让图像符合要求。
这里也顺便说明一下,使用“sprite_add_from_surface()”的方法去获取游戏截图时,如果直接套用自带的“application_surface”会有一个弊端,在Draw_GUI事件中绘制的GUI界面会被排除在外截取不到。
解决方法是把GUI界面绘制到制定的surface中,然后单独获取即可,另外也可以使用“screen_save”的方法直接获取屏幕截图,不过这个方法好像略有延迟,大家可以根据需求自行选择。

2017-12-07 12:08
Comments
Write a Comment