Exemplo n.º 1
0
    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();
        }
    }
Exemplo n.º 2
0
    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 = "";
    }