我尝试用玩家制作原子来制作游戏。我真的很擅长制作一部好看又有效的游戏。
但是现在我想让原子对不同的相(固体,液体,气体)有不同的性质我发现我不能使用Phy_restitution因为它不存在,所以我尝试制作三个物体(固体,液体和气体)并赋予它们自己的特性。
但这并没有奏效。创建事件检查原子应该是什么状态并创建该状态,但这给了我一个错误。
我如何制作三个不同恢复原子的阶段?
------create event------ obj_h_parent
temp = global.temp
if temp < 14 instance_create(x,y,obj_h_solid) instance_destroy()
if temp > 14 and temp < 20 instance_create(x,y,obj_h_liquid) instance_destroy()
if temp > 20 instance_create(x,y,obj_h_gas) instance_destroy()
我得到的错误是:
致命错误 行动编号1 创建活动 对象obj_h_parent:
PerformEvent递归深度失败 - 检查无限循环,检查父对象的对象 at gml_Object_obj_h_parent_CreateEvent_1(第4行) - 如果temp&gt; 20 instance_create(x,y,obj_h_gas)instance_destroy()
我今天尝试通过制作三个物体并让它们在创建时检查温度来做另一种方式: temp = global.temp 如果温度&lt; 14 instance_create(x,y,obj_h_s)instance_destroy() 如果温度> 14和temp&lt; 20 instance_create(x,y,obj_h_l)instance_destroy() 如果温度> 20 instance_create(x,y,obj_h_g)instance_destroy()
但是当我跑步时,游戏制作者给出了和以前一样的错误。我删除了父母。
答案 0 :(得分:0)
查看您的错误消息,我假设obj_parent是您的液体,固体和气体对象的父级。我还假设在子项的create事件中,您使用event_inherited()函数,或者将此事件留空,导致相同的结果。
因此,当您创建obj_parent时,create事件会立即创建一个子节点,它运行相同的创建代码,这意味着它还会在销毁自己之前创建另一个实例。然后这个新实例创建另一个,创建另一个,创建另一个,等等。这是你的无限循环。
创建之前&amp;在销毁时,您应首先检查您的实例是否尚未处于正确状态。或者您可以使用instance_change()函数并告诉它不要再次运行创建代码。 https://docs.yoyogames.com/source/dadiospice/002_reference/objects%20and%20instances/instances/instance%20functions/instance_change.html
例如:
temp = global.temp
if (temp < 14) instance_change(obj_h_solid, false);
else if (temp > 14 && temp < 20) instance_change(obj_h_liquid, false);
else if (temp > 20) instance_change(obj_h_gas, false);