【问题标题】:Game Maker - Not all objects workGame Maker - 并非所有对象都有效
【发布时间】:2016-05-02 15:49:17
【问题描述】:

这是我的代码(放置在步骤事件中)

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

【问题讨论】:

    标签: game-maker


    【解决方案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 事件:

    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 事件中的内容。

    【讨论】:

    • 我尝试按照您的建议进行操作,但现在所有项目都不起作用。澄清一下,我有一个 Obj_Player 和多个包含代码的项目。
    • 我更新了答案。顺便说一句,如果new 变量对jsp 变量中的幻数有影响,那么您可以在Collision 事件中接收此值,使用类似new_value = other.new;if time > 0 jsp = new_value; else ... 的东西
    猜你喜欢
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    相关资源
    最近更新 更多