GameMaker Studio 2

创建于:2017-04-19

创建人: dougen

184 信息 956 成员
游戏开发工具 GameMaker Studio 2 的讨论小组
GameMaker Studio 2小组导航 :介绍、愿景、内容
Linpean 2017-10-27

我最近半年开始学习GameMaker Studio 2(以下简称GMS2),向往着变成一名独立开发者,同时也在了解GMS2的引擎操作,阅读F1帮助文档,趴教程。可以说 GMS2 的中文用户很少,百度贴吧关注人数也未破万,资料很不成体系,很多前人的资料和文章都未被人整理,压在不知名的角落,我希望能够帮助其他的中文用户了解GMS2,所以建立一个快速导航,帮助大家快速开始GameMaker Studio 2的学习。

愿景和管理工作

希望大家不要在公开的帖子中留下联系方法或询问他人的联系方式,而是将有关一个话题的讨论都公开在帖子中,如果真的是要私下联系,可以使用私信的功能。我不希望看到的是一个人提出一个问题后通过私下的沟通解决了问题,而关于解决问题的过程并没有留在帖子中,无法给搜索到这个帖子的人提供帮助。

  • 希望大家不要重复发帖,将与同一话题的讨论集中到一个帖子中
  • 希望大家在发表帖子和回复之前先考虑一下措辞,事后发现错误也及时订正
  • 希望大家不要发表无价值的回复,当你只是觉得某一个帖子好的时候,请使用「点赞」功能

管理员的工作主要是维护秩序,维护的主要目标是方便他人检索和阅读信息,希望大家不要感到不满。

  • 修改帖子标题以符合帖子内容,通常会修改几乎所有帖子标题
  • 修改正文和回复中明显的错别字、将代码编辑代码块
  • 将重复的帖子导向讨论更多的帖子,并移除新的重复的帖子
  • 删除重复或无意义的回复,删除不当内容

导航模块

  • 快速索引社区:国内比较大的GameMaker中文社区和推荐的QQ群
  • 求助:提出你在使用过程中遇到的问题,寻找需要的功能和插件,管理员会不定期整理QA内容,防止日经QA
  • 开发:讨论与游戏开发有关的话题,或发布你自己开发的游戏
  • 分享:原创文章、资料汇总、翻译自官网的文章和文档

快速索引社区

  1. Yoyogames官网
  2. GMS2官方文档
  3. GMS2文档红色激情汉化版
  4. GameMaker开发者之家(维护中)
  5. GameMaker百度贴吧
  6. GameMakerStudio2 Wiki(正在创建中)
  7. GameMaker开发者之家QQ群:235271204
  8. GameMaker:Studio2 菜鸟群:102797189
  9. GameMaker:Studio2入门小站

求助整合

  1. 官网如何购买,如何注册?
  2. 国内更新太慢,怎么办?


开发

    待续

[ 分享:入门 ] Make an RPG:开始我们的RPG之旅
Linpean 2017-10-23

文档说明

本系列是油管上的HeartBeast[Beginner] Make an RPG课程的中文笔记,主要形式是截图的方式进行步骤上的说明。

由于原教程是基于GMS1版本的,我这里是用GMS2版本进行制作的,界面和部分函数都有变化,有错漏的地方,请参考原视频和官方帮助文档。接触GameMaker时,苦于国内没有完整的一个RPG教程,诺娃上的青铜的幻想GameMaker: Studio 中文教程可惜因为作者的工作,没有持续更新下去。而红激的教程也是以FC上的小游戏为切入点,只好上油管,HeartBeast的教程很丰富,有平台跳跃、射击、也有角色扮演。

面向对象:GameMaker新手,以学习一门脚本编程语言,制作一个RPG游戏为目标的爱好者。

主要包括以下内容(蓝色标识已完成,目前进度 :18/30):

相关参考资料:

  1. GMS官方说明文档
  2. [Beginner] Make an RPG--HeartBeast
  3. GameMaker: Studio 中文教程--青铜的幻想
  4. GMS2官方中文教程系列--顺子
SNOWFALL DEVLOG_03
highway★ 2021-11-22

经历了大概10天的严重睡眠不足,白天大部分时间不是补觉就是打瞌睡。接着生病,不过好在一天就恢复了。
基本上这些天都在做3C,发小给的建议是花大量时间在3C上再往后推,要不然可能会有很多返工,可能还要持续一段时间。

Image title

之前的准星和移动处理,基本上和nuclear throne差不多,开始测试的时候我用的手柄(像helldivers那样,没有开启准星),忽略了键鼠操作准星可能导致的问题。在键鼠下,当鼠标(准星)固定在某一个点时,角色会在移动的时候根据瞄准角度(鼠标位置)去自动转身,会有点奇怪,就像车在漂移,这个体验很难受。就改成了helldivers那种逻辑,在非瞄准状态下,射击方向和朝向匹配,这样在键盘操作上,如果不瞄准,就是8方向射击,更复古,也可以在不减少移动速度的情况下向一个固定方向射击;如果在比较安全的距离,利用瞄准来精确射击。

Image title

精确射击本来打算给敌人设计弱点区,比如这样

Image title


但是top-down 3/4 这个视角很尴尬,比如横版卷轴或者3D TPS、FPS来说,敌人和玩家是站在地上,但在2d top-down  这个视角下,其实敌人和玩家实际上是躺在地上 =_=

后来想如果做多个hitbox,在子弹上再加raycast处理来检测hitbox,后来想到如果关联到动画上可能工作量挺大,有点嫌麻烦,暂时先用瞄准线和敌人的中心点之间的角度来处理精确瞄准。后面还是需要试一下raycast,哪怕只给boss或者比较强的敌人做这个功能,这个如果实现了,战斗会更有意思一些,对于枪法好的人来说。

Image title

另外学着用动画曲线做了一个完美换弹的试验,不过可能并不用像战争机器那样麻烦,可能Returnal那种处理更简化一些(虽然是建立在无限子弹的基础上),还没有考虑好,暂时没有扔进工程。

Image title

………………………………………………………………………………………………………………………………………………………………………………………………………………………………

在写代码和想功能之外,做美术资源的时候开始比较头疼,由于想做非像素,就没办法使用aseprite,用photoshop在做动画上折磨了大概一天,实在是受不了了,找了一些做动画的插件,看视频感觉也不是很方便,就用去年疫情时候买的优动漫的正版开始做角色粗略动画,但是做到一半……发现动画的帧数还有限制,wtf,只好去买了个破解版的Clip Studio Paint EX(功能全部开放),正版我实在是承受不起,在导出的时候CSP只能导出单帧图像,并不像aseprite那么方便,还要用Free texture packer处理成条状图再回photoshop里加颜色,不过整个流程都比只在PS里做动画心情舒畅多了。(顺便说一下,这个软件千万不要像我这样装繁体中文版,很多地方都看不懂,靠猜……还不如在安装的时候直接选择英文了)

Image title

Image title

………………………………………………………………………………………………………………………………………………………………………………………………………………………………

大前天在sprite editor里操作的时候,GMS2直接闪退(没有报错弹窗),重启后并没有任何提示信息,我也没当回事就忘了这茬儿。

前天晚上孩子睡觉以后,突然想去改一个功能,然后就出现了资源树里object索引出错的问题,无法新建任何object,只要新建,各种代码报错(注释掉相关的,其他报错,无限),只要删除新建的object,恢复,google搜了很多也没找到相关的情况。

在请教了@流贾君 之后,只能导出所有文件做yymp重开项目,成功救回来了工程。

昨晚在@流贾君的过程中还发现音频组合材质组不能改名了(搜索了一下,在reddit和gms社区也有人发帖说这个问题)………上个月新建工程的时候还可以,我换了上一次的runtime发现也不能改名,暂时只能等更新了,不敢用beta版。

………………………………………………………………………………………………………………………………………………………………………………………………………………………………

有用的连接:

GMS2 BLOG上的文章,不单单可以扩展世界,利用这个方法可以像魂系列那样来进行敌人的刷新处理

EXPANDING WORLDS: BUILDING GAMES WITH INTERCONNECTED LEVELS

由于更新2.3之后都没咋用过,看了这个教程感觉要补习很多东西,新加的constructor和static,要花时间仔细学学用法。

Static Variables

Struct Inheritance

(上面俩视频连接都来自Youtube的SamSpadeGameDev,这个频道很不错)

………………………………………………………………………………………………………………………………………………………………………………………………………………………………




2021年11月22日周一 

早上阴沉沉 这会儿大太阳

Highway


(转发自:原日志地址
游戏音乐音效配音
jyy1108 2021-11-08

,10余年专注于游戏音乐外包,使小旭团队清楚的了解玩家对音乐的喜好和需求。 各位着急不着急的都来看看,企业qq:3001547718

T.M.D 最担心的事儿果然发生了
notlsd 2021-08-13

https://www.youtube.com/watch?v=ibI7gUVPmgo

Gamemaker Studio 2的奇怪小技巧001 - 快速提取Room内instance的各项资料
流贾君 2021-07-25

        因为某个游戏项目的需要,需要提取某个特定Room内instance的各项信息,坐标xy,depth之类的。用于在另一个房间通过不同条件控制并重现这些instasnce,数量少还好,但是数量大的时候一个个手动查看录入实在太不科学。在友人@顺子的提示下,于是有了下面这一段代码。

1、创建一个object,命名为obj_temp_datacollect。

2、在Step里输入下面这段代码,也可自行在with里面添加其他内容,image_alpha,image_blend之类的。

if keyboard_check_pressed(ord("P"))
{
    ini_open("temp_mark.ini");
    for(var i = 0; i < instance_count; i ++;)
    {
        with(instance_id[i]) 
        {
            var oobject_name = object_get_name(object_index);
            var xx = string("xx=" + string(x));
            var yy = string("yy=" + string(y));
            var ddepth = string("ddepth=" + string(depth));

            //分段
            /*
            ini_write_string("data", oobject_name+".name"+string(i), object_get_name(object_index))
            ini_write_string("data", oobject_name+".x", x)
            ini_write_string("data", oobject_name+".y", y)
            ini_write_string("data", oobject_name+".depth", depth)
            */

            //一行
            ini_write_string("data", oobject_name + "." + string(i), oobject_name + "," + xx + "," + yy + "," + ddepth);
        }
    }
    ini_close();
}

3、运行游戏工程,至目标room,按一下P,关闭工程。

4、打开资源管理器,C盘-用户-用户名-AppData-Local-项目名,找到temp_datacollect.ini,打开并提取所需内容。


        完。如果有更好更快更巧妙的方法,欢迎大家交流讨论,虚心学习一下。

(转发自:原日志地址
GameMaker Studio + Opera GX 浏览器 - Amaze Me Game Jam 活动 火热报名中!
indienova 2021-06-08

GameMaker Studio 与 Opera GX 浏览器合办了 Amaze Me Game Jam 活动 火热报名中!


本次主题是 NEON(霓虹)

可以自由发挥,在游戏中使用霓虹灯元素,或打造一个满是霓虹灯光的赛博朋克范儿都市都行,尽情发挥!


基本规则

  • 游戏必须使用 GameMaker Studio 2 制作。
  • 游戏必须紧扣主题。
  • 游戏必须提交项目文件以进行验证。
  • 游戏不能包含不适合未成年人的主题,例如吸毒、性主题、野蛮暴力、令人不安的视觉效果等。
  • 允许组队。

奖金

  • 一等奖: $1500 USD
  • 二等奖: $1000 USD
  • 三等奖: $500 USD

点击前往 itch 报名参加!

https://itch.io/jam/amaze-me-game-jam

GMS 软件中国区促销活动

为了支持中国用户参与此次活动,GameMaker Studio 特此开通了官方淘宝直营店,方便大家提供更加顺畅的购买渠道;

GMS Desktop、Mobile、Web 版本各释放出 50 个名额,248 元基础上返现 50 元,具体返现方式可咨询官方淘宝店客服!

中文语言问题请求帮助
T.L 2021-05-28

今天刚下载了2.32版本。在设置面板选择了中文语言。面板全变行书了。有大佬知道怎么补救么?电脑是苹果笔记本MAC系统。

Image title

游戏本地化翻译公司,欢迎各位出海的朋友来撩~
大海 2021-05-11

专注游戏本地化翻译,配音,随时欢迎各位老板来试译,希望能长期合作,vx:zzh564183167

寻找美术小伙伴
wx09y 2021-04-25

本人正在独立开发一款自走棋类游戏,棋子全部使用网络素材,需要找一个美术小伙伴设计ui界面

一次性付费或者发售后奖励都行

有意者请联系qq949553079,谢谢

战旗冒险,开发日志01
wx09y 2021-04-11

战旗冒险终于完成了初期版本,战斗,房间选择,棋子特殊能力,各种抉择事件等等,能够正常的通关了

现在最大的问题,就是没有美术小伙伴,自己瞎画,看起来非常的闹着玩

Image title


游戏主要灵感来自酒馆战旗,战斗也是棋子依次对撞的形式

每回合都会得到金币,经验值,用来提升自己阵容的战斗力

对战双方都有前排和后排,前排单位先攻击,也会优先被敌人攻击.有些棋子可以直接攻击后排

选择不同房间会有不同奖励,有金币,经验,或者直接强化属性Image title


下发的平原2/5,指的是某个地名进入5次会获得更多奖励.

如果大家有更多好点子,也欢迎多提提意见啊

b站视频



(转发自:原日志地址
艹,YoYo Game 被 Opera 收购了,背后可是 360
notlsd 2021-01-21

虽然没有什么直接的鲜见后果,但整个人都不好了

游戏项目演示:《隔离》 (游戏设计文档)
cfan_yjr 2020-11-07

故事背景

玛丽亚他们一行考察队在一个外星球上。当她正在研究一些古迹时,出现了意外,隧道崩塌了,她和她的团队分开了。 现在她一个人,孤立无援,只能努力找到另外一条回去的路。

游戏玩法

游戏主要围绕探索和作战行动展开。利用沿途发现的物品,玩家将能够升级玛丽亚的装备,对抗不断变强的敌人。

胜利条件

正如其他的类银河城游戏一样,当到达关底或者杀死BOSS后,就获胜。

当然,我们将要开发的游戏版本是初级版本,流程非常短。我们只会专注于游戏系统的创建。所以这次我们不会添加胜利的条件。这个游戏只是一个原型,用于演示类银河城游戏的主要功能。

操作方式

有两种,一是键盘控制,二是手柄控制。

键盘控制方式如下

左右方向键:左右移动

Z:跳跃

X:冲刺

C:攻击

Esc: 暂停游戏

I:打开道具栏

Tab:打开地图

Enter:确定

手柄控制方式如下

左右方向键:左右移动

A:跳跃,确定

RB:冲刺

X:攻击

Start:暂停游戏

Y:打开道具栏

Select:打开地图

敌人

用之前做的游戏里的现成素材,绿色章鱼怪,左右来回移动,在自己的巡逻路径里移动,不会主动攻击。

攻击方式

玛丽亚有一把能量手枪,是太空考古学家的标准装备。

这把特殊的手枪可以用某些材料升级,她会在沿途发现改变武器特性的材料。

玛丽亚可以获取和装备物品。


技能

玛丽亚有两大技能:

冲刺:快速向前迈出

墙跳:跳到墙上,让她到达更高的地方。

地图

《隔离》这款游戏有地图系统,将能帮助玩家实时的跟踪他们的行走轨迹。

地图系统是由一个个小矩形组合而成。通过按Tab键或者Select键来打开。

道具

《隔离》这款游戏还有一个特点是有道具栏,它可以存储玛丽亚沿路获得的物品,同时,玛丽亚也可以装备这些物品。

我们将更多地集中在技术实现的层面上,所以美学方面将不是重点。 存储道具的界面将会很简单,只是一个项目列表,随时能够更新玛丽亚放入的物品信息。

(转发自:原日志地址
模板卷轴游戏--樱桃2
cfan_yjr 2020-09-22

故事背景

Berry带着樱桃从洞穴出来,把樱桃分发给人们。他被人们当作英雄。可是,只有他自己知道,更大的危机就要来临。因为那些绿色球是外星人的幼体。它们已经被孵化出来了,马上要重回地面了。

只有一个人能利用樱桃的力量来打败外星人:Berry!


游戏玩法

目标是到达关底,不像第一部是收集齐樱桃。全新的敌人也会登场,会有不同的行为模式。

胜利条件

完成每一关的条件是到达关底,如果玩家受到攻击,就会丢一条命。并重启关卡。只有三条命。

游戏道具

樱桃收集后,可以提高玩家的力量,让玩家有一段无敌时间。新增金币道具,用于收集后,提高玩家的分数。

玩家的控制

键盘控制。方向键,用于左右行走,上下爬梯。空格键是跳跃,ESC打开菜单,回车键为确定。

全新的敌人

绿色八爪鱼,紫色八爪鱼。

Image title

Image title

对敌人的攻击方式

这次主角不像第一部,没有手段来攻击敌人。除了吃樱桃让自己无敌外,现在还可以踩死敌人。

其他杂项

会掉落的平台,当主角接触到它,就会往下掉。

Image title


移动的平台,会来回移动。主角可以用它去一些特殊的地方。

Image title


跳跃平台,当主角在上面跳跃时,会跳得更高,从而来到更高的地方。

Image title

这些是第二部游戏主要的素材了。

(转发自:原日志地址
学习制作游戏--单屏平台游戏--游戏文档制作 1
cfan_yjr 2020-08-30

    游戏名字叫《樱桃》,在迷宫里收集樱桃。

故事背景

因为外星人的占领,樱桃,成为了一个难以获得的食物。为了能够获得樱桃,人们愿意出大价钱来购买。你听说有一个洞穴里长着许多的樱桃,为了发财,你勇敢地出发了。冒险就此开始。

游戏目标

把每一关的樱桃全部收集完,并成功撤离。在这期间,因为敌人而存在一定的危险。玩家被敌人击中三次就会失败。每次击中,玩家都会回到这关的起点。

游戏控制

方向键左右移动,上下爬梯子。空格键跳跃。ESC键,菜单功能。

敌人

他们会按照设计好的路线行进,不会主动攻击玩家。有两类,紫色和绿色。

紫色是跳跃的行动模式,来阻挡玩家。绿色则是带有一定的智力,来阻挡玩家。


游戏素材

Image title


spr_player_idle

50*64

Image title

spr_player_walk

50*64

Image title

spr_player_climb

50*64

Image title

spr_block_red

64*64

Image title

spr_block_brown

64*64

Image title

spr_ladder

64*64


Image title

spr_ball_purple

64*64

Image title

spr_ball_green

64*64

Image title

spr_cherry

64*64

Image title

spr_goal

64*64

以上素材的原点都设置在正中心。

字体,根据自己的喜好,选择一个。名称为fnt_score.

音效有5种,分别是菜单音效,目标达成音效,收集樱桃的音效,玩家跳音效和受到敌人伤害时的音效。

(转发自:原日志地址
IDE更新的问题

更新了IDE后,旧试用版IDE创建的yyp文件打不开怎么办?

太空小蜜蜂01--素材的准备
cfan_yjr 2020-08-01

游戏的故事背景

你是一个太空战士,是人类最后的希望。你的任务是保卫太空站,摧毁外星人的战舰。

游戏玩法

玩家是边射击边躲避的操作。关卡难度,逐渐递增。

胜利条件

每一关,消灭所有的敌人。如果敌人到达太空站,则游戏失败。玩家没有生命,也是游戏失败。

控制方式

玩家用方向键,进行左右移动,按空格键,攻击。ESC键,弹出菜单。

菜单

在菜单里可以,关闭游戏,重开游戏,返回游戏。


敌人

只有一种类型的敌人。左右移动,随机射击。生命值为1,攻击值为1.


打开Gamemaker Studio,新建一个工程命为Space Gala,导入游戏素材。

spr_player


50*43的大小,参考点设置在中心。碰撞图形为默认的矩形。名称为spr_player

spr_bullet_player


16*16的大小,参考点在中心。碰撞图形为矩形。名称为spr_bullet_player

spr_life

16*16的大小,参考点在中心。名称为spr_life

spr_enemy_red


16*18的大小,参考点在中心。碰撞图形为矩形。名称为spr_enemy_red

spr_background

256*256的大小。这是游戏背景。名称为spr_background.

还要建立两种字体文件。fnt_score,大小为14,字体为Arial,fnt_message,大小为14,加粗。

把原来房间重命名为rm_level_1,把游戏背景添加上去。如下图所示

游戏背景添加

这样,太空小蜜蜂的游戏元素就差不多都准备好了。

(转发自:原日志地址
[GMS2分享与求助]place_meeting和physics_test_overlap的差异

由于正在制作一个需要调用物理引擎平台跳跃游戏,尝试把非物理引擎下的平台跳跃系统重写进物理引擎下

在写状态机的时候遇到了place_meeting和physics_test_overlap的差异引起的问题

帮助手册的“Collision Checking”页面里的“Physics Collisions”标签下写到“When using the build in physics, the above collision functions are not guaranteed to work for physics enabled instances. This is mainly due to the fact that these instances no longer use the majority of the regular built in variables (instead, physics enabled instances have their own set of variables) and neither do they use the collision mask or bounding box, as they use fixtures instead. ”,简单来说就是因为物理object会使用fixture而非collision masks或bounding box,因此place_meeting等常用的Collision Checking命令无法很好地运行,实际强行使用也确实会出现一些运行不正常的情况(没有保存不正常例子的gif)

因此在使用物理引擎的情况下要进行Collision Checking,手册中仅提到了使用physics_test_overlap

单独建了一个实验室工程来说明问题

*以下代码中的obj_StaticParent指的就是蓝色方块

Image title


如上图所示,当使用代码

if physics_test_overlap(phy_position_x,phy_position_y+1,0,obj_StaticParent)

phy_speed_y = 0;

来判断白色方块是否站在蓝色方块上方时,由于右边方块与右侧的蓝色方块发生接触,physics_test_overlap的返回值为true,因此触发了phy_speed_y = 0,而左边的白方块则正常落到蓝色方块上后才触发phy_speed_y = 0

Image title


如上图,而如果用

if place_meeting(x,y+1,obj_StaticParent)

yspeed = 0;

来写判断白色方块是否在蓝色方块的上方,则会不会因为白色方块右侧紧贴蓝色方块而触发yspeed = 0,仅在下方接触到蓝色方块后触发yspeed = 0

Image title


同理在水平方向上,如上图

当使用

if physics_test_overlap(phy_position_x+1,phy_position_y,0,obj_StaticParent)

phy_speed_x = 0;

来判断白色方块是否在右侧碰撞到蓝色方块时,下面的白色方块会因为接触到了在下方的蓝色方块而返回true,进而phy_speed_x被赋值为0

Image title


如上图,如使用

if place_meeting(x+1,y,obj_StaticParent)

xspeed = 0;

来判断白色方块是否在右侧碰撞到了蓝色方块时,不会因为下方接触到了蓝色方块而返回true,能够正常使用

由以上实验可以判断出,physics_test_overlap命令会判断两个实例的fixture是否会“接触”,即fixture和fixture紧贴着而没有任何像素发生重合也会判断为true,

而place_meeting则会判断两个实例的collision masks或bounding box是否会“重合”,即两个实例仅collision masks或bounding box发生了重合才会返回true,否则即使是两个实例相距0像素紧贴在一起,返回值也会是false

这就是我发现的两个命令的差异

以下就是我遇到的问题

我原本写状态机的时候使用

if place_meeting(x,y+1,obj_StaticParent)

MyState = myState = playerstate.onGround;

来实现当玩家控制的object站在地面上(即判断下方1像素的位置是obj_StaticParent)则让状态机进入onGround状态

我在物理系统中替换成

if physics_test_overlap(phy_position_x,phy_position_y+1,0,obj_StaticParent)

MyState = myState = playerstate.onGround;

Image title


这种左右侧紧贴着墙壁的状态也会被认为是onGround,即使下方根本没有接触到obj_StaticParent

同理判断左右是否贴墙的时候也会受到上下影响

由于我没有系统的学过编程,除了对代码不熟悉以外更重要的就是缺乏程序员思维,这让我在遇到这个问题以后是在想不出变通解决之道,希望大佬不吝赐教

[求助]GMS2的物理引擎是否是“连续”的?

题目表述的不是特别清楚,我用下面一张图来解释一下我的疑问

Image title


上图中room启动了物理引擎,白色和蓝色方块均为物理物体

白色方块最初的移动和跳跃分别通过调整phy_speed_x和phy_speed_y来实现

在跳跃起来后通过physics_pause_enable(true)命令来暂停物理引擎

之后通过调整白色方块的坐标来实现移动

再使用physics_pause_enable(false)来取消物理引擎的暂停效果后,可以看到白色方块会回到暂停的位置,保持暂停时的运动状态继续运动

如果尝试不修改整个room的物理状态,而是通过phy_active来关闭白色方块本身的物理状态,则如下图

Image title


白色方块在空中使用phy_active = false来离开物理计算

但这时修改白色方块的坐标(即修改x和y值)无法使白色方块移动

使用phy_active = true后白色方块保持之前的物理状态进行运动

由以上一个实验我产生了一个疑问,GMS2的物理引擎是否必须是“连续”的?

在阅读物理引擎的官方文档里,发现对物理的介绍提到过一句“Normally for a physics simulation to work, it must be continuous and cannot be stopped and started, or have instances suddenly moved from one place to another in the room.”

是否这就意味着我无法在游戏的部分过程中使用物理引擎来简化一些复杂运动的代码量(比如使用钩锁钩住移动的天花板,还可以调整钩锁长度的单摆运动),而部分简单运动则使用坐标相关代码?

我原本打算制作一个平台跳跃游戏,角色可以使用钩锁钩住墙壁或天花板来做单摆运动越过障碍,我也尝试过使用圆的方程来还原,勉强能够实现单摆运动,但如果钩住的天花板会移动,以及钩锁的长度可以在单摆运动中变化,按我现在的能力不用物理引擎还真写不出来,于是想到了在钩锁部分使用物理引擎来简化计算的方法,结果就像上图那样难以实现

我也尝试过纯粹使用物理引擎来写这个游戏,而且由于碰撞检测不再需要自己写代码,代码量减少了很多,然而……

Image title


Image title



由于使用了物理引擎后会计算object在碰撞后的角速度,或者站在悬崖边上时向下掉落的角速度(即使角度阻尼值写得很大也无法避免),如果加载画好的人物sprite就会变得很诡异

Image title


我也尝试过使用draw命令来避免人物sprite角度乱动的状态,但是由于物理引擎还是会计算站在悬崖边上时object向下落的情形,当站的过于靠边的情况下还是会出现运动轨迹诡异的情况

Image title


在尝试了很久也阅读了游戏的帮助文档以后确实找不到解决办法,因此想要请问各位大佬,GMS2里是否确实无法让物理引擎“不连续”?

加入 indienova

  • 建立个人/工作室档案
  • 建立开发中的游戏档案
  • 关注个人/工作室动态
  • 寻找合作伙伴共同开发
  • 寻求线上发行
  • 更多服务……
登录/注册