我想看看玩家踩着的地板和玩家的顏色是否相同。這是我的代碼到目前爲止比較不同物體中的變量遊戲製造商
if place_meeting(x,y,Obj_Floor)
if !other.colour = self.colour
instance_destroy()
它被放置在玩家的步驟事件,但它什麼都不做。有什麼問題,我該如何解決它?
我想看看玩家踩着的地板和玩家的顏色是否相同。這是我的代碼到目前爲止比較不同物體中的變量遊戲製造商
if place_meeting(x,y,Obj_Floor)
if !other.colour = self.colour
instance_destroy()
它被放置在玩家的步驟事件,但它什麼都不做。有什麼問題,我該如何解決它?
我對Game Maker語言沒有個人經驗,但經過快速搜索後,它的語法與C,C++和Java非常相似。
我看到的問題是您正在使用賦值運算符=
而不是比較運算符==
。
According to the documentation您正在使用已棄用的比較運算符=
。建議您只使用=
進行分配,並使用==
進行比較。 ==
(等於)的相反值爲!=
(不等於)。
如果要檢查兩個顏色是不一樣的你的代碼是這樣的:
if (other.colour != self.colour)
{
// colours are not the same, do some stuff
}
首先,如Fibbles解釋的,你不應該寫
!a = b
因爲你做什麼=是一個分配。您應該使用=代替,這相當於
! (a == b).
所以,你的代碼應該是這樣的:
if (place_meeting(x,y,Obj_Floor))
if (other.colour != self.colour)
instance_destroy();
而且,如果你是在「步驟」事件,「其他」關鍵字不一定指向你的obj_floor。您應該將此代碼放入播放器的碰撞事件中,並刪除第一行。所以,你應該有:
在播放機「碰撞obj_floor」事件:
if (other.colour != self.colour)
instance_destroy();
另外,我建議把分號在你行的末尾,即使GML允許相反。
我編輯了我的代碼以符合您的建議,但仍然沒有任何變化。我已經仔細檢查了變量並且讓它們故意不同,但是玩家不會死。 –
我認爲你的「其他」對象可能不是你想要的obj_floor,因爲你在step事件中。嘗試將你的代碼放入播放器的碰撞事件中,以便「其他」將指定與你碰撞的對象。我會編輯我的答案。 –
你對';'不太正確。 GM具有非常靈活的語法,您可以使用';'但也可以不使用';'。沒有不同。 – Dmi7ry
首先,也許它是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
GM在'='和'=='之間沒有區別。但是你關於'!='的提示是正確的解決方案。 – Dmi7ry
我看你是對的,我會編輯答案。 – Fibbles