【问题标题】:How to tell if an object has been touch by the player in gml code如何在gml代码中判断玩家是否触摸了对象
【发布时间】:2015-12-09 06:40:24
【问题描述】:

嘿,我将举一个例子来说明我想做什么,假设我有 5 个圆形精灵,在我的 gml 代码中,如果 cirlce_1 被触摸,那么你可以触摸 circle_2,如果 circle_2 被触摸,那么我想做这样的事情你可以触摸circlce_3。请谁可以帮助我,愿意通过贝宝给予奖励。

【问题讨论】:

    标签: 2d game-maker gml


    【解决方案1】:

    Game Maker 中的触摸事件被视为鼠标事件。如果您希望圆圈只允许玩家按顺序触摸它们,您可以为每个圆圈分配一个编号,并使它们都成为同一个对象。看看这个:

    创建圈子的脚本

    counter = 0;
    lastball = 0;
    
    for(i = 0; i < 10; i++){//Make that third part "i += 1" if using a version before Studio
      c = instance_create(floor(random(room_width)), floor(random(room_height)), objCircle);
      lastball++;
      c.myNum = lastball;
      c.radius = 16;//Or whatever radius you want
    };
    

    这里的for语句会自动生成房间周围的圆圈,但是如果你想手动控制,试试这个:

    newCircle()

    c = instance_create(argument0, argument1, objCircle);
    c.myNum = lastball;
    c.radius = 16;
    lastball++;
    

    这将在您想要的任何地方创建一个新圈子,并且每次调用它时都会自动增加lastball。例如,您可以说newCircle(16, 27);

    在 objCircle 的步骤代码中

    if(mouse_check_button_pressed(mb_left) && point_distance(x, y, mouse_x, mouse_y) < radius && counter == myNum){
      counter++;//Or counter += 1 in versions before Studio
      //Insert whatever circles do when clicked here
    };
    

    点击这些圆圈可以做任何事情。由于它们都是同一个对象,也许您可​​以使用 switch 语句,以便每个对象根据其数量执行不同的操作。

    如果还有什么我可以帮忙的,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-22
      相关资源
      最近更新 更多