当您使用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 事件:
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 事件中的内容。