level 1
大佬们请教一下,我的游戏里有这样一行代码
if keyboard_check(vk_left) fang_xiang=-1
if keyboard_check(vk_right) fang_xiang=1
我用这种按钮方式改变“fang_xiang”来确定玩家面对的方向,但是平常状态下玩家左右移动时才需要通过按钮来判断图片的左右翻转,但是不按按钮的时候“fang_xiang”
处于未设置状态,然后玩家不按左右按钮站着射子弹的时候我用“fang_xiang”来判断子弹的左右反转会报错,请问有没有办法让这个变量被设置完以后不会自己改变
2019年09月10日 09点09分
1
吧务
level 13
1、从图1可以判断,jian_qi调用jian_qi.fang_xiang时出现报错,也就是说jian_qi在特定情况下会使用一个未定义初始值的变量。预先定义变量是写东西的良好习惯,在GM里就是在create事件里先给所有变量赋初始值。显然LZ没做到。
2、图2的FANGXIANG.gml无法确认触发条件。GM系引擎的基础规则是“触发事件时执行对应动作”。如果你只是空写了这么两行代码的话,有可能永远都没执行过。不知道LZ是根据哪个教程开始做的,我所知道的教程都会先教create、step、key/mouse这些事件,最快速的代入“事件-动作”这个逻辑。
3、如5楼的楼中楼所说,image_xscale有很大概率能替代LZ自定义的fang_xiang。这是一个GM内置变量,用于表示默认的水平绘制比例。如果LZ的水平转身也这个变量来表示的话,是完全可以这样处理的。不过那句“这样好像直接就报错了”又出现了“只说报错,不说报错信息,也不说自己到底做了什么”的情况。
2019年09月11日 07点09分
7
我看的教程里用enum states把主角的各个动作分成了好几个部分,每个动作都风别对 应一个脚本转换动作时用state=states.XX转换成其他的状态(XX指enum里定义的动作)
2019年09月12日 03点09分