GML -> 检查碰撞实例的变量,然后执行操作

Posted

技术标签:

【中文标题】GML -> 检查碰撞实例的变量,然后执行操作【英文标题】:GML -> check for a colliding instance's variable, then do action 【发布时间】:2015-01-16 23:46:32 【问题描述】:

我一直在尝试编写一些 GML 脚本,但在某些时候完全卡住了。 我希望敌人攻击我的主角,但不要重叠。所以,我会说。

//enemy is moving left-to-right...
if place_meeting(x+1, y, enemy) //if there's a collision with another enemy
   if (other enemy).is_attacking // ???
   // checks if the colliding enemy is attacking, if true, it should attack as well...
   is_attacking=true;
   else
   //walks

这是一个描述我想要得到的图像(请注意,敌人知道他们应该攻击,即使他们没有与主角直接接触,只是因为除此之外还有一个敌人在攻击)

【问题讨论】:

【参考方案1】:

感谢instance place 函数,我终于能够做到了。

我会发布代码以防有人需要类似的东西

if place_meeting(x+5, y, malo) //malo means enemy on spanish, i use to write multilingual code, lol :P
          var inst;
          inst=instance_place(x+15,y,malo); //x varies on sprite size. it basically returns the unique id of the object that's 15 pixels on the right of self (malo)
    with (inst)
        if (is_attacking)
        other.is_attacking=true; //if collided enemy is attacking, then this(other) enemy should attack too. search more about the width statement if you don't catch this part
        else
        other.is_attacking=false;
        hspeed=1;
        
    
else if place_meeting(x+3, y, character)
is_attacking=true;
else
is_attacking=false;
hspeed=1;

和结果

【讨论】:

如果这个答案令人满意地解决了你的问题,你应该点击它旁边的复选标记接受它。这同样适用于您将来可能提出的任何其他问题。如果您想了解更多信息,可以查看这篇 Meta 帖子:How does accepting an answer work?。

以上是关于GML -> 检查碰撞实例的变量,然后执行操作的主要内容,如果未能解决你的问题,请参考以下文章

如何在GameMaker (GML)中执行存储在数据结构中的Script(脚本 函数)

如何在 GML 中获取当前日期?

ansible 的playbook 使用示例

类加载与实例化

Unity3D如何检查与标记为“标签”的对象的碰撞

IOS的一个关于球碰撞的小游戏