新人提问集中帖[2023]
gamemaker吧
全部回复
仅看楼主
吧务
level 13
q糖豆p 楼主
提问须知:
---基础---
0:确认你的问题在置顶帖、贴吧第一页、本集中帖的最后一页都无法找到答案;
1:确认你的问题不在引擎自带的新人教程范围;
2:请勿使用含贬义的词汇来形容你的问题,除非你确实想说“无法回答这个问题的都(贬义词)”;
3:通常来说,你的问题要包含这4个部分,即“你想做什么”(目的)、“你做了什么”(过程/已有内容或方式选择,注意这部分将决定问题的解决方向,什么都不说的话意味着完全答非所问的可能)、“现在的效果”(运行结果)、“决定性的差异”(要改进/改变的地方),除非你有充足的理由省略其中一项或多项;
4:如果附带代码截图,请把object名、事件名、代码行号一起截上,并保证截图里的“空白”尽可能少;
5:提问请注明当前使用的软件版本,如果是参照旧版(2.2或更早)教程,请查看建立script时自带注释的提示阅读文档,并按新的function结构(或者说把旧版教程的script格式转化为新版function格式)进行书写。
---进阶---
6:不要拿别人的代码出来提问;
7:请充分理解,绝大多数问题的解决方案都不唯一,不同人回答的可能是不同路线,且可能在方向上正好相反(如两件事冲突选择放弃/弱化哪一个)。一题多问会大幅度增加这种情况的发生概率;
8:请尽量避免提问类似“有没有人知道……”之类的问题,除非你想要的确实是“有”或“没有”这样的结果(做游戏/程序,严谨是必要的);
9:请尽量使用正式一些(括号齐全,按程序逻辑设置缩进)的代码格式,也许格式改好以后自己就能找到错误在哪;
10:加一个变量能解决的问题都不是问题,加两个变量/一个数据结构能解决的问题也都不是问题;
11:能自己做个demo测试一次就知道答案的问题都不是问题,无论怎样都设计不出demo来做出区分的选择对你来说选哪个都一样,不必纠结。
---传承---
12:如果问题的复杂度较高,且有计划逐步攻克问题并记录完整解决方案的话,建议单独开帖,本吧精华帖类别“经典问答”正是为此准备;
13:问题完美解决以后,希望能留下解决问题的记录(用了什么方法,或参照哪个回答的方案),这里有不少“哟,我这坏了不能用”这样不明所以的提问又在几天之后追加个“哟,现在能用了”这种不明所以的解决方法,对后续搜到帖子的读者没有任何帮助;
---碎碎念---
吧主位空缺的时候,度娘连过滤广告都困难;当选以后,度娘连正常问答都吞帖。
2022年12月29日 01点12分 1
level 6
五天了居然还没有人发言 我来问一手
我在做一个类似于魔塔一样的demo 现在在用的撞墙的代码是返回上一帧控制的 但是由于移动时并不是一次走一个像素的速度 所以导致撞墙的时候角色的坐标和墙之间会有几个像素的间隔 导致在只能允许通过角色大小的通道进不去的问题
目前我自己的解决办法是撞墙以后就吸附网格固定坐标 因为后续我希望加入一些不规则的设计 网格吸附还是不太理想
我想问一下有没有什么其他的方式可以让角色移动到再走一像素就撞墙的时候才停止
2023年01月04日 14点01分 2
吧务
level 13
q糖豆p 楼主
@RTX院长 在2楼的提问解答:
首先澄清一点,魔塔的通用设计是基于“格子”而非“像素”的。关于“能否移动”、“移动到哪”、“是否与怪物战斗”、“是否拾取物品”的判定也是基于格子进行。这种规则下咱其实更推荐使用数据结构(比如数组/buffer)存储地图信息,而不是在房间里直接摆放,同时解决了各层之间切换时容易出现的“已打过的怪刷新”、“已拾取的物品再出现”、“已消耗过钥匙的门又有了”这样的BUG。“加入一些不规则的设计”感觉有些意味不明,在没有其他信息支撑的情况下,是个就算拿来当噱头也是犯傻程度远高于设计感的东西。
如果要加入移动动画(其实不推荐,影响游戏节奏),在整格规则下可以使用的方案之一是这样:玩家的移动仍然是“整格”,但加入一个变量是“剩余移动时间”,这个变量的值平时是0,一旦发生移动的话就会变成10,并在每个step自行减少,玩家sprite的绘制位置是由“之前所在的格子”、“当前所在格子”、“剩余移动时间”共同决定,根据需要可以设置成“剩余移动时间非0的时候不能继续移动”
如果题主坚持不用整格而继续使用像素坐标的话,事情要复杂一点(好在还不至于无解)。首先要明确的是到底是想让角色“走到整格位置停下”还是如问题原文所说的“到再走一像素就撞墙的时候才停止”。前者可以使用时间控制(格子32像素、移动速度4像素的话要移动8次,不推荐无法整除的设计)或坐标判断(比如墙面坐标是100、140、180这样的数字,玩家也要在对40取余数为20时停下)。后者的话,是要在发生碰撞后(或预移动进行碰撞检测后)进行坐标补偿。当然了,这里要补偿到的位置不是网格吸附,而是基于“碰撞目标的坐标”和“移动方向”计算出的值。移动方向题主应该容易记录,碰撞目标的坐标不要使用obj_wall.x表示,而要在碰撞事件里使用other.x,这里涉及到的是object和instance的区别,碰撞事件的other是用来表示“正在和自身发生碰撞的特殊实例”的。
这里的设计相对要繁琐,一方面要注意step循环的顺序,一方面要注意“移动时同时碰到了两个坐标不同的实例”会导致的BUG。咱推荐的方式是这样:在标准step里进行常规移动,在碰撞事件里完成“推开1像素”的最终坐标确认,注意这里要使用min/max函数保证最终坐标是“可能推到的最远位置”以防止碰撞事件顺序错乱致使“更靠里的墙由于事件触发靠后,反倒把角色‘拉进去’”的BUG。最后在end step里将玩家放到最终坐标。
2023年01月05日 01点01分 3
level 6
@q糖豆p 感谢大佬的耐心解答 撞墙的问题解决了 逐帧坐标补偿完美解决
首先纠正一下我的说法 我并不是想做一个魔塔一样的游戏 只是在用魔塔作为敲门砖去学习引擎 就像移动模式并非固定要用像素移动或者是网格移动 但是会尝试实现多种移动方式 学会各种效果的实现方法
然后之前因为我是在用每个房间直接放置实例来布置的 所以遇到存档的时候没办法存档每一个单独实例的参数 大佬说一般都是用数组的 所以我用数组尝试了一下 确实很合理 我用的是一个二维数组来控制每个楼层的道具怪物刷新 array[房间序号][道具序号]=布尔值 问题是解决了 只是不知道这样的方式合不合适 有没有更简单的方式实现
另外解决了刷新的问题以后 遇到了一个新的问题 数组存档的时候是只能像存变量一样 用循环分别储存数组每一个值 还是说可以直接储存一整个数组的值
2023年01月09日 09点01分 4
level 5
刚开始学,请问选中文本中间发现只能替换,不能增加文本。只有在末尾才能增加,请问怎么在中间增加文本?谢谢
2023年01月11日 14点01分 5
你说的这应该是电脑输入的方式问题 不是gms的问题 在键盘home键区域有九个键 你可以挨个试一下是干嘛用的 有可以更换输入时闪烁的那个光标样式的 也有更改输入方式的 在增加和替换之间选择 还有删除内容往后删除的…
2023年01月12日 02点01分
@RTX院长 谢谢
2023年01月12日 12点01分
level 2
gm8纯萌新。最近我搞解包了某个gm8引擎制作的游戏,我想在里面添加新的room来增添新的游戏场景,但是是创建的新房间在游戏当中无法跳转,游戏中的房间切换每次都会略过我新创建的房间,请问这是因为我的房间没有存入游戏数据里面的问题吗?还是其它的问题?该怎么解决?
2023年01月11日 23点01分 6
在房间管理器中有个排序 看看你新增的房间是不是在最后一个 不过我没用过gm8 不太确定有没有房间管理器 总之就是先确认一下你的房间是不是在合适的位置 其次是你需要看原代码里对房间切换控制的方式是什么 如果不是room_goto_next控制 而是直接用room_goto(房间名)的方式的话 你加房间当然不会有用
2023年01月12日 02点01分
@RTX院长 gm8我没听说过有房间转换器(你说的“合适的位置”具体指什么?我用了room_goto的代码,是仿照游戏里原本的房间转换的代码写的,应该没有问题
2023年01月12日 02点01分
@RTX院长 我怀疑可能是我新建的房间没有在gamedata里面才会被略过的,但是我也不确定也不知道该怎么解决这个问题(
2023年01月12日 02点01分
@RTX院长 感谢您的回答,问题已解决,原来只是我忘记修改objDoor的ICC了(
2023年01月12日 03点01分
level 5
请问一下,有一个ttf字体文件,怎么导入进去?
2023年01月12日 12点01分 7
"直接拖动到窗口内“、”拖动到窗口内资源树的Font/字体位置“,至少先尝试一下这两种吧。
2023年01月13日 06点01分
@q糖豆p 谢谢解答,我直接复制到gm的字体文件夹了,现在有了,谢谢
2023年01月13日 12点01分
好的,建议下次把问题补充为“想在制作阶段使用”,而不是现在问题里这种有些容易被误解为“要在游戏作品显示文字时使用”的说法。
2023年01月17日 15点01分
level 1
哪里下载GM8
2023年01月14日 06点01分 8
nikaple.gitee.io/iwbt-nikapke-engine-doc/#
2023年01月16日 15点01分
level 7
老问题,runtimes下不动,是不是要代理
2023年01月16日 15点01分 9
不是说国内已经有runtime站点了嘛……你那边用的什么网- -
2023年01月17日 07点01分
@q糖豆p emm……能不能具体点
2023年01月17日 10点01分
@我是K小鱼♬ 前半句是陈述,现在在国内用,会从国内服务器下数据,理论没有使用代理的必要。后半句是疑问,是不是层主的网络环境比较特殊,这样的话就算用代理也不一定有效…或者说要用针对这个特殊环境的代理。
2023年01月17日 15点01分
@q糖豆p 首先吧主的语文真好(?……其次我runtime已经下好了,不明不白的就下好了。我们家的网好像也没什么特殊的,至于稳定性和我爸有没有用软件干预这些我就不得而知了。
2023年01月18日 07点01分
吧务
level 13
q糖豆p 楼主
@贴吧用户_7bb9DC3772 在10层的问题解答
硬说的话,方案也有……实在不想在GMS2里开DND,拿GM8截个图好了。
判定的“变量”可以不是“变量”而是“包含变量的表达式”。当然方案不唯一,也可以判定(i-1)*(i-2)*(i-5)*(i-8)是不是等于0,甚至(abs(i-3)-2)*(abs(i-5)-3)是不是等于0……但如果只想一次判断i是否等于某个值就达到一次把1、2、5、8都判定到,在咱已知的范围里是不行的。
2023年01月17日 15点01分 12
level 1
请问哪里能找到这个扩展包
2023年01月24日 05点01分 14
已解决,翻了几十个gmk才找到这一系列脚本
2023年01月26日 05点01分
level 13
写到步事件里的移动代码,最近发现了一个问题,如果把游戏的运行速度从60fps改成1fps,也就是一秒一帧的测试时,偶尔会出现明明手已经完全抬起来了(指啥键都没按)但是人物还会出现往前走的现象,可以持续好几帧才停下来,出现这种现象的概率很低,自己也不知道代码哪里出问题了,请求帮忙分析一下看看。
2023年01月24日 12点01分 15
如果没问题的话也请大佬告诉一声[泪],那铁定就是硬件问题。移动代码就这些,其他的代码都和移动没关系。
2023年01月25日 11点01分
抬起后再移动一帧是正常的(抬手时间位于draw前缓冲时间,已经判定但未显示),2帧的话可能有刷新问题,再多的话问题就不出现在这一段代码上了。另外下次截图请截上行号。
2023年01月26日 20点01分
@q糖豆p 刷新问题是不是指的是屏幕刷新率与帧切换之间的延迟吗?这种情况只有开垂直同步才会有吧?
2023年01月27日 01点01分
@q糖豆p 还是指的是刷新率不正常?
2023年01月27日 01点01分
吧务
level 13
q糖豆p 楼主
@捉摸不透的屑☞ 在2021(居然都不是2022而是2021,雷点0)帖子203层关于“改变精灵没反应”的提问:
0、从照片(而不是截图,雷点1)上可以看到,此object自定义了draw(绘制)事件
1、此object的draw事件动作没有截图/照片(即存在“自定义事件里强行绘制sprite6而无视当前sprite选择是什么”这种可能)
2、运行的照片(也许都不是)没有补充说明,可以说是处于“意义不明”状态
也许你认为“这是显而易见/约定俗成/正常(正确)思维的人都会这样想/这样做的事,没必要说明”,但请想好“正确思路下制作的结果不会存在这个BUG”。而且人和人不一样,出BUG的地方也会千差万别。如果问题仍未解决,请在今年的帖子里补充问题细节。
2023年02月10日 02点02分 16
level 5
已知坐标,想做一个曲线的缓动加颤抖,其中精灵的正方向始终指向运动方向。
请问一下怎么写,谢谢
2023年02月12日 10点02分 17
只有坐标已知嘛,想做出来至少还需要曲线、颤抖方式、缓动方式也是已知。之后就是“直接写”,区别只是“运动方向”是“指向即将去的方向”还是“从刚才的位置指过来”。也就是锯齿移动轨迹是一直头朝外还是P股朝外。
2023年02月13日 02点02分
@q糖豆p 我想用抛物线请问可以吗,然后颤抖就是小幅度,大概10个像素左右的四周摇摆,缓动是开始与结尾快,中间慢,运动方向指向即将去的方向,谢谢大佬
2023年02月14日 05点02分
@禾子熠 所以……你的问题似乎主要不在“制作”而是在于数学模型建立。向上斜抛轨迹(包含下落)确实符合曲线是抛物线且两端快最高点慢的情况,按正常的斜抛轨迹去写就是了,无需额外进行缓动判定。倒是那个10像素的摇摆是怎么回事
2023年02月15日 02点02分
@q糖豆p 好的谢谢,可能想的有点多,谢谢指导
2023年02月15日 05点02分
level 7
吧主大大好!一个关于安卓导出的问题:
Gms2 2022.9.0.49 无法导出安卓,JDK NDK SDK 密钥均配置(包括设置)完成,SDK33,报错如下:
(删去大部分输出的东西,红色的是我觉得重要的信息。我觉得问题主要是gradle上,但我不知道这是个啥,之前已经实现了安卓的导出,gradle的问题也遇到了但是不明不白地就解决了。更换系统后就不行了。本人更换过SDK,runtime,均为此报错,劳烦各位大佬解决!谢谢!)
2023年02月18日 13点02分 18
需要继续核实的内容是:0、当前选择的是打包APK还是直接运行(个人建议使用前者);1、工程选择的目标、最大、最小安卓版本以及对应SDK是否已完全安装;2、Runtime既然换过请看一下版本号的前3位是否和IDE一致。
2023年02月20日 05点02分
安卓导出咱看报错信息就没看出过啥信息,一般不能用的时候都是SDK又更新了……另外下次截图不要用蓝底黑字了,真挺费眼的。
2023年02月20日 05点02分
@q糖豆p 谢吧主[熊-谢谢你]
2023年04月30日 10点04分
1 2 3 4 5 尾页