这是我的代码(放置在一个步骤事件中)
if (place_meeting(x,y,Obj_Player))
{
time = 50
}
if (time > 0)
{
Obj_Player.jsp = 17;
}
else
{
Obj_Player.jsp = 12;
}
if (time > 0) time -= 1;
放置在创建活动中:
image_speed = 0.4;
time = 0;
new = 17
出于某种原因,具有此代码的一个对象将起作用,但其余的则不起作用。我不知道为什么,我需要房间里有多件物品。
此外,创建事件中的项目,我想进入每个单独项目的创建代码。我只想修改new
所以我必须移动所有代码还是new
?
答案 0 :(得分:1)
当您使用Obj_Player.blablabla
时,GMS将首先创建该对象的实例。您需要使用将返回id
实例的函数。例如,instance_place()
。我不知道你究竟在做什么,所以代码可能无法使用:
所有实例都有一个全局计时器的示例:
var obj = instance_place(x, y, Obj_Player);
if obj != noone
{
with Obj_Player
{
time = 50;
}
}
with Obj_Player
{
if (time > 0) time--;
}
接下来是Obj_Player
:
// Create
time = 0;
// Step
if time > 0
jsp = 17;
else
jsp = 12;
每个实例都有一个独立的本地计时器示例:
var obj = instance_place(x, y, Obj_Player);
if obj != noone
obj.time = 50;
接下来是Obj_Player
:
// Create
time = 0;
// Step
if time > 0
jsp = 17;
else
jsp = 12;
if (time > 0) time--;
更新:
为了澄清,我有一个Obj_Player和多个包含代码的项目。
我想我明白你要做什么
Obj_Player,创建:
time = 0;
Obj_Player,碰撞事件(与您的对象):
time = 50;
Obj_Player,Step event:
time--;
if time > 0
jsp = 17;
else
jsp = 12;
这就是全部。
如您所见,所有代码都放在Obj_Player
。因为当你做的时候
if time > 0
Obj_Player.jsp = 17;
else
Obj_Player.jsp = 12;
并且您拥有此代码的多个实例,jsp
仅在所有实例具有17
时才会time > 0
。实际上,jsp
将包含最后一个实例的检查结果(因为最后一次检查将取代之前的任何结果)。
此外,创建事件中的项目,我想进入每个单独项目的创建代码。我只想修改
new
所以我必须移动所有代码还是new
?
仅new
。首先将调用Create
事件(如果我们正在讨论GMS,而不是关于GM8),然后调用Creation code
,那么使用Creation code
您只需修改所有内容,Create
{1}}事件。