void Update() { //Skýtur raycast í miðju skjás RaycastHit hit; Ray ray = cam.ScreenPointToRay(Input.mousePosition); //Ef það er hlutur í raycastinu if (Physics.Raycast(ray, out hit, Range)) { //Ef það hittir hlut sem er hægt að taka upp if (hit.collider.tag == "Object") { Object ObjectHit = hit.collider.gameObject.GetComponent <Object>(); if (ObjectHit.Interactable) { IF.Interacting(0); //Sýnir texta if (Input.GetMouseButtonDown(0)) //Ef spilarinn "interactar" við hlutinn (smellir á mús) { if (!INV.Fullinventory) //Ef inventory-ið er ekki fullt { INV.AddToInventory(hit.collider.GetComponent <Object>().ObjectID); //Setur hlutinn í inventory-ið SSM.AllPickups.Remove(hit.collider.gameObject); Destroy(hit.collider.gameObject); //Eyðir hlutinum úr veröldinni } } } } //Ef það hittir girðingu sem er hægt að brjóta else if (hit.collider.tag == "Breakable fence") { if (INV.CurrentItemID() == 2) //Ef hluturinn er vírklippur í höndinni á spilaranum { IF.Interacting(4); //Sýnir texta if (Input.GetMouseButtonDown(0)) //Ef spilarinn "interactar" við hlutinn (smellir á mús) { Breakable_fence BF = hit.collider.gameObject.GetComponent <Breakable_fence>(); //Nær í fence scriptina BF.destroyed = true; //Opnar girðinguna } } } //Ef það hittir geimveru sem er hægt að frelsa else if (hit.collider.tag == "Alien") { if (hit.collider.GetComponent <Alien>().Freed == false) { IF.Interacting(5); //Sýnir texta if (Input.GetMouseButtonDown(0)) //Ef spilarinn "interactar" við geimeruna (smellir á mús) { hit.collider.GetComponent <Alien>().Run(); //Geymveran hleypur í burtu } } } //Ef það hittir hurð sem er hægt að opna else if (hit.collider.tag == "Door") { if (INV.CurrentItemID() == 4) //Ef spilarinn heldur á keycard { IF.Interacting(1); if (Input.GetMouseButtonDown(0)) //Ef spilarinn "interactar" við hurðina (smellir á mús) { hit.collider.GetComponent <Opendoor>().Open(); //hurðinn opnast } } else { IF.Interacting(8); } } //Ef þetta er scenedoor (skiptir um scenes) else if (hit.collider.tag == "SwitchSceneDoor") { SwitchSceneDoor SwitchDoor = hit.collider.gameObject.GetComponent <SwitchSceneDoor>(); if (SwitchDoor.Locked) //En hún er læst þá er látið mann vita { IF.Interacting(9); } else //Annars { IF.Interacting(SwitchDoor.InteractionTextID); if (Input.GetMouseButtonDown(0)) //Ef spilarinn "interactar" við hurðina (smellir á mús) { SwitchDoor.SwitchScene(); //Skiptir um scene } } } //Ef það hittir ammo else if (hit.collider.tag == "Ammo") { IF.Interacting(10); //Sýnir texta if (Input.GetMouseButtonDown(0)) //Ef spilarinn "interactar" við ammo-ið (smellir á mús) { if (Gun.Ammo != 10) //Ef ammoið er ekki fullt { Gun.Ammo += 10; //Bætir á ammo hjá spilaranum if (Gun.Ammo > 10) { Gun.Ammo = 10; } Destroy(hit.collider.gameObject); //Eyðir ammokassanum úr veröldinni } } } //Ef það hittir ekki neitt þá er spilarinn ekki að interacta við neitt else { IF.NotInteracting(); } } //Ef það hittir ekki neitt þá er spilarinn ekki að interacta við neitt else { IF.NotInteracting(); } }
void CustomStart() { cam = Camera.main; Scene scene = SceneManager.GetActiveScene(); /* ================================================== * ========== Pickupable Items ========== * ================================================== */ // Bæta öllum pickupable hlutunum í AllPickups listann ef það er ekki búið að bæta objectunum í þessu scene í listann, annars eyðir þetta öllum pickupable hlutunum if (!CollectedItemsFromScene.Contains(scene.buildIndex)) { // Passa að það verði ekki bætt hlutunum úr þessu scene-i í AllPickups aftur CollectedItemsFromScene.Add(scene.buildIndex); // Bæta öllum hlutunum með tagið Object við í AllPickups listann og passa að þeim verði ekki eytt þegar það er skipt um scene. foreach (GameObject Pickup in GameObject.FindGameObjectsWithTag("Object")) { // Þetta gerist bara ef hluturinn er ekki í Don't Destroy On Load núþegar if (Pickup.scene.buildIndex != -1) { AllPickups.Add(Pickup); DontDestroyOnLoad(Pickup); } } } else { foreach (GameObject Pickup in GameObject.FindGameObjectsWithTag("Object")) { if (Pickup.scene.buildIndex != -1) { Destroy(Pickup); } } } // Eyða öllum pickupable hlutunum sem byrjuðu í sceninu en eiga ekki að vera lengur því að leikurinn er núþegar að geyma þá foreach (GameObject Pickupable in GameObject.FindGameObjectsWithTag("Object")) { if (!AllPickups.Contains(Pickupable)) { Destroy(Pickupable); } } // Slökkva og kveikja á pickupable objectum eftir því í hvaða sceni þeir eiga að vera foreach (GameObject Pickupable in AllPickups) { // Ef hluturinn segir að hann eigi að vera í þessu scenei þá er hann activataður, annars er hann deactivataður if (Pickupable.GetComponent <Object>().SceneNumber == scene.buildIndex) { // Færa hlutinn aðeins upp svo að hann detti ekki í gegnum terrainið Vector3 location = Pickupable.transform.position; location.y += 0.05f; Pickupable.transform.position = location; // Activata hlutinn aftur Pickupable.SetActive(true); } else { Pickupable.SetActive(false); } } /* ================================================== * ========== Player stats ========== * ================================================== */ // Finna spilarann til þess að gefa honum rétt líf og stamina og líka til þess að mögulega hreyfa hann Player player = GameObject.FindGameObjectWithTag("Player").GetComponent <Player>(); // Gefa spilaranum rétt líf og stamina player.Health = LastSceneHealth; player.Stamina = LastSceneStamina; // Gefa spilaranum réttu hlutina í höndina Hand playerHand = player.gameObject.GetComponent <Hand>(); if (Slot1ItemID != -1) { playerHand.AddItem(Slot1ItemID, 1); } if (Slot2ItemID != -1) { playerHand.AddItem(Slot2ItemID, 2); } if (Slot3ItemID != -1) { playerHand.AddItem(Slot3ItemID, 3); } // Teleporta spilaranum á staðinn sem er í NextSpawnLocationName ef það er eitthvað í NextSpawnLocationName if (NextSpawnLocationName != "") { Debug.Log("NextSpawnLocationName: " + NextSpawnLocationName); Transform playerTransform = player.gameObject.GetComponent <Transform>(); Transform teleportTransform = GameObject.Find(NextSpawnLocationName).GetComponent <Transform>(); playerTransform.position = teleportTransform.position; playerTransform.rotation = teleportTransform.rotation; } /* ================================================== * ========== Spilarinn kemur úr bunker ========== * ================================================== */ if (NextSpawnLocationName != "") { // Loka bunkerunum sem spilarinn er að fara útúr ef það eru engar geimverur þar lengur if (NextSpawnLocationName.Substring(0, 6) == "Bunker") { // Ef það var ekki ófrelsuð geimvera í síðustu senu læsist hurðin if (AlienInLastScene == false) { AllClosedDoors.Add(GetBunkerNumber(NextSpawnLocationName));// Loka hurðinni } else { AlienInLastScene = false; } // Disablea óbvini sem eiga ekki að spawna þegar spilarinn er að koma úr bunker foreach (GameObject enemyGameObject in GameObject.FindGameObjectsWithTag("Enemy")) { NewEnemy enemyScript = enemyGameObject.GetComponent <NewEnemy>(); if (enemyScript.noSpawnOnBunkerExit) { enemyGameObject.SetActive(false); } } // Opna hliðið ef spilarinn er að koma úr bunker GameObject.FindGameObjectWithTag("Breakable fence").GetComponent <Breakable_fence>().destroyed = true; } } // Loka öllum hurðum sem eru í AllClosedDoors listanum ef spilarinn er í eyðimörkinni if (scene.buildIndex == 0) { foreach (GameObject SSDGameObject in GameObject.FindGameObjectsWithTag("SwitchSceneDoor")) { SwitchSceneDoor SSD = SSDGameObject.GetComponent <SwitchSceneDoor>(); GameObject teleport = SSDGameObject.transform.GetChild(0).gameObject; // Ef þessi hurð teleportar úr bunker er henni lokuð ef hún er líka í AllClosedDoors listanum if (teleport.name.Substring(0, 6) == "Bunker") { // Ef þessi bunker er í AllClosedDoors listanum if (AllClosedDoors.IndexOf(GetBunkerNumber(teleport.name)) != -1) { // Loka hurðinni SSD.CloseDoor(); } } } } // Hreinsa NextSpawnLocationName NextSpawnLocationName = ""; }