void OnCollisionEnter2D(Collision2D coll) { // The boolean 'questFlag' was unnecessary... The name of the object that the player collides with is a sufficient condition for triggering a quest. // I've attached Triggerer to the Player GameObject (instead of GameHolder); this made the quest triggering work without putting the logic into 'Update()'. Woohoo! ^^ if (PlayerMove.CollidedName == "Quest_1" && Quests.GetQuestBoolean(0) == false) { Quests.ChooseQuest(Quests.QuestEnum.Quest_1); Quests.SpawnQuestIcon("Quest_5", -11.6f, -6.2f, 5); } if (PlayerMove.CollidedName == "Quest_2" && Quests.GetQuestBoolean(1) == false) { Quests.ChooseQuest(Quests.QuestEnum.Quest_2); } if (PlayerMove.CollidedName == "Quest_3" && Quests.GetQuestBoolean(2) == false) { Quests.ChooseQuest(Quests.QuestEnum.Quest_3); Quests.SpawnQuestIcon("Quest_8", 1.2f, -6.3f, 8); Quests.SpawnQuestIcon("Quest_9", 9.8f, 1.8f, 9); } if (PlayerMove.CollidedName == "Quest_4" && Quests.GetQuestBoolean(3) == false) { Quests.ChooseQuest(Quests.QuestEnum.Quest_4); Quests.SpawnQuestIcon("Quest_6", -10.6f, 2.9f, 6); GameObject.Find("Quest_6").tag = "shelter"; Quests.SpawnQuestIcon("Quest_7", -3.8f, 5.6f, 7); } if (PlayerMove.CollidedName == "Quest_5" && Quests.GetQuestBoolean(4) == false) { Quests.ChooseQuest(Quests.QuestEnum.Quest_5); Quests.SpawnQuestIcon("Quest_10", 2.6f, 3.8f, 10); GameObject.Find("Quest_10").tag = "shelter"; } if (PlayerMove.CollidedName == "Quest_6" && Quests.GetQuestBoolean(5) == false) { Quests.ChooseQuest(Quests.QuestEnum.Quest_6); // If quest 7 is not yet done, spawn quest 11. if (Quests.GetQuestBoolean(6) == false) { Quests.SpawnQuestIcon("Quest_11", -12.7f, -1.0f, 11); } } if (PlayerMove.CollidedName == "Quest_7" && Quests.GetQuestBoolean(6) == false) { Quests.ChooseQuest(Quests.QuestEnum.Quest_7); // If quest 6 is not yet done, spawn quest 11. if (Quests.GetQuestBoolean(5) == false) { Quests.SpawnQuestIcon("Quest_11", -12.7f, -1.0f, 11); } } if (PlayerMove.CollidedName == "Quest_8" && Quests.GetQuestBoolean(7) == false) { Quests.ChooseQuest(Quests.QuestEnum.Quest_8); // If quest 11 is already done, spawn quest 12. if (Quests.GetQuestBoolean(10) == true) { Quests.SpawnQuestIcon("Quest_12", 8.5f, 5.6f, 12); } } if (PlayerMove.CollidedName == "Quest_9" && Quests.GetQuestBoolean(8) == false) { Quests.ChooseQuest(Quests.QuestEnum.Quest_9); } if (PlayerMove.CollidedName == "Quest_10" && Quests.GetQuestBoolean(9) == false) { Quests.ChooseQuest(Quests.QuestEnum.Quest_10); } if (PlayerMove.CollidedName == "Quest_11" && Quests.GetQuestBoolean(10) == false) { Quests.ChooseQuest(Quests.QuestEnum.Quest_11); // If quest 8 is already done, spawn quest 12. if (Quests.GetQuestBoolean(7) == true) { Quests.SpawnQuestIcon("Quest_12", 8.5f, 5.6f, 12); } } if (PlayerMove.CollidedName == "Quest_12" && Quests.GetQuestBoolean(11) == false) { Quests.ChooseQuest(Quests.QuestEnum.Quest_12); } // When you get back to a shelter, your cold value gets reset to zero. (It being instant is a tad unrealistic, but it's also easy and convenient.) if (PlayerMove.CollidedTag == "shelter") { PlayerStats.Cold = 0.0f; } // Trigger Player's death if hunger or cold reaches the maximum allowed value. if (PlayerStats.Hunger == PlayerStats.DeathHunger || PlayerStats.Cold == PlayerStats.DeathCold) { PlayerStats.PlayerDeath(); } // When the player has enough Radio Parts, the game ends. if (PlayerStats.RadioPartCount == 5) { // ++ lopeta peli ja triggeröi loppuintro } }