我想知道玩家是否踩到地板并且玩家的颜色是相同的。到目前为止,这是我的代码
if place_meeting(x,y,Obj_Floor)
if !other.colour = self.colour
instance_destroy()
它被置于播放器的步骤事件中,但它什么都不做。有什么问题,我该如何解决?
答案 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