求助,请问该如何让if 条件下改变的变量在条件消失后仍然不变?
gamemaker吧
全部回复
仅看楼主
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 11
var是个好东西[阴险]
2019年09月10日 09点09分 2
var不是弄临时变量的吗?
2019年09月10日 11点09分
@我爱你和大家♬ var tmp=keycheck; ... if(tmp){...} ... if(tmp){...} ...小火汁,经验不够啊[阴险]
2019年09月10日 12点09分
@我爱你和大家♬ 哦我可能理解错了你的意思,但还是没什么毛病,只不过情况相反,你要把var去掉[阴险],只要没有var就没问题,又或者是你自己写了些不改写的
2019年09月10日 12点09分
谢谢,不过我的代码里应该是没有var的
2019年09月11日 00点09分
level 1
2019年09月11日 00点09分 5
生成的子弹调用的方向不要用fang_xiang,直接sign(image_xscale)就行,既然你不会用的话
2019年09月11日 01点09分
@MikuScarlet emmm请问是直接换成sign(image_xscale)吗?这样好像直接就报错了,有没有办法直接调用玩家image的数据呢?
2019年09月11日 01点09分
@0 玩家的,object0是玩家
2019年09月12日 03点09分
吧务
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分
level 9
2019年09月11日 07点09分 8
level 9
2019年09月11日 07点09分 9
楼主直接在子弹的创建时间那边检测按键来判断子弹发射方向的,说实话我还是第一次见。
2019年09月11日 11点09分
@MikuScarlet 哦哦,谢谢
2019年09月12日 03点09分
感谢指导
2019年09月12日 03点09分
1