绘制中文不显示
现象
刚开始使用 GM 的时候,需要在文本框里面输出对话(即在 draw_GUI 中调用 draw_text_ext 方法)。
英文正常显示,换成中文就不显示了,会替换成空方框(□),如下所示:
{width=700px}
原因
查阅资料发现由于没有添加中文的字符范围,所以对于没有的字符使用默认字符 □ 显示。
解决方案
- 在【编辑字体】页面中点击【Add】按钮。
{width=700px}
- 按先后顺序点击【From Code】和【Add Range】。
{width=700px}
- 添加成功之后红色方框内会显示对应字符。
{width=700px}
正常效果展示
{width=700px}
一些注意点
不能选择西文等一些不支持中文的字体。
编辑页面右上角【Sample】不可选择的字体,就算支持中文,也无法正常显示(原因未知),宋体、微软雅黑均是。
{width=700px}
碰撞问题
现象
游戏中需要处理人物和物体之间的碰撞。
默认情况下 sprite 的碰撞形状都是覆盖全部范围长方形,为了实现真实的碰撞效果,我们往往需要修改 sprite 的 碰撞掩码(Collision Mask)。
比如我下面这张图就是从 obj_player 进入 Collision Mask 配置项,并完成修改。
{width=700px}
进入游戏测试发现人物向下走正常。
{width=300px}
但是向上走的时候出问题了,正常情况这里应该是靠到主角的腰部才走不过去,现在头部就上不去了。
{width=300px}
原因
因为从 obj_player 进入修改的 sprite 是 obj 默认的图,也就是向下的待机图。但是向上走的时候换成了向上的行走图,改图没有修改,所以呈现这样的效果。
{width=700px}
解决方案
修改所有与人物相关的图(上下左右、待机行走)的 Collision Mask 即可。
{width=700px}
正常效果展示
{width=300px}
物体遮掩问题
现象
在 rpg 游戏中,视角一般为俯视,所以会存在以下现象:
- 物体重心在人物重心下方,物体遮挡人物。
- 物体重心在人物重心上方,人物遮挡物体。
如下图所示:
{width=700px}
但在测试过程出现了这样的现象:
{width=700px}
原因
由于我设置过人物和物体 parent 的 depth 均为 -y 了,那只能是 sprite 的重心没有设置正确。
解决方案
Origin 点用于设置重心,有如下规则:
- 对于角色,将 Origin 点设置在角色的脚部,确保角色在移动和旋转时不会偏离地面。
{width=300px}
- 对于物体,将 Origin 点设置在其重心位置。
{width=500px}
正常效果展示
(人物已处于房子后面)
{width=700px}