比较不同对象游戏制作者的变量

时间:2016-06-28 16:33:07

标签: game-maker

我想知道玩家是否踩到地板并且玩家的颜色是相同的。到目前为止,这是我的代码

if place_meeting(x,y,Obj_Floor)
    if !other.colour = self.colour
        instance_destroy()

它被置于播放器的步骤事件中,但它什么都不做。有什么问题,我该如何解决?

3 个答案:

答案 0 :(得分:0)

我没有使用Game Maker语言的个人经验,但经过快速搜索后,它的语法与C,C ++和Java非常相似。

我看到的问题是您使用的是赋值运算符=而不是比较运算符==

According to the documentation您正在使用已弃用的比较运算符=。建议您仅使用=进行分配,并使用==进行比较。 ==(等于)的反面是!=(不等于)。

如果您想检查两种颜色是否相同,您的代码将如下所示:

if (other.colour != self.colour)
{
    // colours are not the same, do some stuff
}

答案 1 :(得分:0)

首先,正如Fibbles所解释的那样,你不应该写

 !a = b

因为你所做的是=分配。你应该使用!=代替

! (a == b).

所以你的代码应该是这样的:

if ( place_meeting(x,y,Obj_Floor) )
    if ( other.colour != self.colour )
        instance_destroy();

此外,如果您处于“step”事件中,则“other”关键字不一定指向您的obj_floor。您应该将此代码放在播放器的碰撞事件中,然后删除第一行。所以你应该:

在玩家“与obj_floor的碰撞”事件中:

if ( other.colour != self.colour )
        instance_destroy();

另外,我建议在行尾添加分号,即使gml允许相反。

答案 2 :(得分:0)

首先可能是y + 1?因为玩家可能只是在场上(如果你正在制作一个平台游戏,那么玩家就会玩,并且触摸"触摸"固体物体)。 无论如何尝试此代码

if place_meeting(x, y+1, Obj_Floor)
   if colour == other.colour
   //Player same color with floor
   else
   //Player different color from the floor