Пример #1
0
 //Collisions
 void OnTriggerEnter2D(Collider2D collision)
 {
     if (collision.gameObject.tag == "Door")
     {
         door      = collision.gameObject.GetComponent <DoorBehavior>();
         doorTimer = Time.time + doorWait;
         stop      = false;
     }
 }
Пример #2
0
 void OnTriggerExit2D(Collider2D collision)
 {
     if (collision.gameObject.tag == "Door")
     {
         door      = null;
         doorTimer = -2f;
         stop      = true;
     }
 }
Пример #3
0
    public void CloseDoor()
    {
        DoorBehavior door = gameObject.GetComponentInParent <DoorBehavior>();

        if (door != null)
        {
            door.setStateLockDoor(false);
        }
    }
Пример #4
0
 private void addDoor(DoorBehavior door, List <DoorBehavior> list)
 {
     if (door.isOpenable && door.gameObject.activeInHierarchy)
     {
         list.Add(door);
     }
     if (openFrames != -1)
     {
         door.FramesToStayOpen = openFrames;
     }
 }
Пример #5
0
    void FixedUpdate()
    {
        device = SteamVR_Controller.Input((int)trackedObject.index);

        // Grab animation and sound
        if (!isGrabbing && device.GetTouch(triggerButton))
        {
            isGrabbing = true;
            Instantiate(grabSound, transform.position, new Quaternion());
            handAnimator.SetTrigger("Grab");
        }
        // Release animation, play, sound, and release object
        if (isGrabbing && device.GetTouchUp(triggerButton))
        {
            isGrabbing = false;
            Instantiate(releaseSound, transform.position, new Quaternion());
            handAnimator.SetTrigger("Release");
            isGrabbing = false;

            if (grabbedObject != null)
            {
                if (grabbedObject.name.Contains("door") || grabbedObject.name.Contains("lamp_head"))
                {
                    DoorBehavior doorScript = grabbedObject.GetComponent <DoorBehavior> ();
                    doorScript.ReleaseDoor();
                    grabbedObject = null;
                }
                else
                {
                    grabbedObject.transform.SetParent(null);
                    Rigidbody rb = grabbedObject.GetComponent <Rigidbody> ();
                    rb.isKinematic = false;
                    tossObject(rb);
                    grabbedObject = null;
                }
            }
        }

        // Haptics based on animation state
        AnimatorStateInfo animState = handAnimator.GetCurrentAnimatorStateInfo(0);

        if (animState.IsName("Grab") || animState.IsName("Release"))
        {
            device.TriggerHapticPulse(pulsePower);
        }

        // Reset scene
        if (device.GetPressUp(SteamVR_Controller.ButtonMask.Touchpad))
        {
            SceneManager.LoadScene("Main");
        }
    }
    void OnControllerColliderHit(ControllerColliderHit hit)
    {
        //Debug.Log(hit.gameObject.tag);
        if (hit.gameObject.tag == "Door")
        {
            DoorBehavior doorBehavior = hit.gameObject.GetComponent <DoorBehavior>();

            if (!doorBehavior.isOpen)
            {
                doorBehavior.OpenDoor();
            }
        }
    }
Пример #7
0
    void OnTriggerStay(Collider col)
    {
        if (device == null)
        {
            return;
        }

        // Grab a single object
        if (device.GetTouch(triggerButton) && (col.attachedRigidbody != null) &&
            (grabbedObject == null))
        {
            if (!col.attachedRigidbody.isKinematic)
            {
                grabbedObject = col.gameObject;
                Debug.Log("grabbedObject: " + grabbedObject.name);

                col.attachedRigidbody.isKinematic = true;
                grabbedObject.transform.SetParent(gameObject.transform);

                TriggerAudio grabbedTriggerScript = grabbedObject.GetComponent <TriggerAudio> ();
                if (grabbedTriggerScript != null)
                {
                    grabbedTriggerScript.MakeContact();
                }
            }
            else if (col.gameObject.name.Contains("door") || col.gameObject.name.Contains("lamp_head"))
            {
                grabbedObject = col.gameObject;
                Debug.Log("grabbedObject: " + grabbedObject.name);

                DoorBehavior doorScript = grabbedObject.GetComponent <DoorBehavior>();
                doorScript.GrabDoor(gameObject);
            }
        }
//		// Release/toss an object
//		if ((col.gameObject == grabbedObject) && device.GetTouchUp (triggerButton)) {
//
//			if (grabbedObject.name.Contains ("door")) {
//				DoorBehavior doorScript = grabbedObject.GetComponent<DoorBehavior>();
//				doorScript.ReleaseDoor ();
//				grabbedObject = null;
//			} else {
//				grabbedObject.transform.SetParent (null);
//				col.attachedRigidbody.isKinematic = false;
//				tossObject (col.attachedRigidbody);
//				grabbedObject = null;
//			}
//		}
    }
Пример #8
0
    //Update Event
    void Update()
    {
        bool[] controls = getControls();
        if (doorTimer != -2f)
        {
            doorTimer -= Time.time;
        }
        //Movement
        velocity.x = 0f;
        if (can_move)
        {
            //Jump
            if (controls[4])
            {
                if (doorTimer < 0 && doorTimer != -2f && !stop)
                {
                    transform.position = door.findDoor();
                    doorTimer          = -2f;
                    door = null;
                    stop = true;
                }
                else
                {
                    if (canJump)
                    {
                        jump_force = jump;
                        canJump    = false;
                    }
                }
            }

            //Move Left and Right
            if (controls[1])
            {
                //Left
                velocity.x = -spd;
            }
            else if (controls[3])
            {
                //Right
                velocity.x = spd;
            }
        }
    }
Пример #9
0
 public bool ToggleSwitch()
 {
     if (timer <= 0)
     {
         foreach (GameObject go in doors)
         {
             //toggle
             DoorBehavior d = go.GetComponent <DoorBehavior>();
             if (d != null)
             {
                 d.ToggleDoors();
             }
         }
         myAnim.SetTrigger("Toggle");
         timer = cooldown;
         return(true);
     }
     return(false);
 }
Пример #10
0
 private void OnTriggerEnter2D(Collider2D collision)
 {
     if ("Teleport".Equals(collision.gameObject.tag))
     {
         DoorBehavior door = collision.gameObject.GetComponent <DoorBehavior>();
         transform.position = door.getNewLocation();
     }
     else if ("InvItem".Equals(collision.gameObject.tag))
     {
         InvItemBehavior item = collision.gameObject.GetComponent <InvItemBehavior>();
         if (collision.gameObject.name == "MapPillBottle")
         {
             item.pickUp("pillBottle");
         }
         else if (collision.gameObject.name == "CureList")
         {
             item.pickUp("cureList");
         }
         else if (collision.gameObject.name == "Ingredient1")
         {
             item.pickUp("ingredient1");
         }
         else if (collision.gameObject.name == "Ingredient2")
         {
             item.pickUp("ingredient2");
         }
         else if (collision.gameObject.name == "Ingredient3")
         {
             item.pickUp("ingredient3");
         }
         else if (collision.gameObject.name == "Ingredient4")
         {
             item.pickUp("ingredient4");
         }
         Debug.Log("Got an inventory item");
     }
     else
     {
         Debug.Log("(PLAYER): Warning, collided with untagged object");
     }
 }
Пример #11
0
    //Init Event
    void Awake()
    {
        //General
        gameObject.tag = "Player";
        gameObject.AddComponent <PixelSnap>();

        sr = GetComponent <SpriteRenderer>();
        rb = GetComponent <Rigidbody2D>();

        //Settings
        spd     = 10f;
        jump    = 3500f;
        gravity = 150f;

        //Variables
        can_move   = true;
        jump_force = 0f;
        velocity   = Vector2.zero;

        door = null;
    }
Пример #12
0
    //Init
    protected override void init()
    {
        base.init();

        zombie   = true;
        behavior = "normal";

        if (zombie)
        {
            gameObject.tag = "Zombie";
        }
        else
        {
            gameObject.tag = "Human";
        }

        door_found = false;
        door_move  = false;
        door       = null;
        level      = LevelManager.instance.getLevelNum(transform.position.y);
    }
Пример #13
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if ("Teleport".Equals(collision.gameObject.tag))
        {
            DoorBehavior door = collision.gameObject.GetComponent <DoorBehavior>();
            if (!door.isLocked)
            {
                transform.position = door.getNewLocation();
            }
            else
            {
                Debug.Log("The door is locked!");
            }
            if (door.isUnlockTrigger)
            {
                door.unlockOtherDoor();
                Debug.Log("Unlocked Other Door(s)!");
            }
        }
        else if ("InvItem".Equals(collision.gameObject.tag))
        {
            InvItemBehavior item = collision.gameObject.GetComponent <InvItemBehavior>();
            if (collision.gameObject.name == "MapPillBottle")
            {
                item.pickUp("pillBottle");
                DialogueBox.QueueDialogue(new KeyValuePair <int, string>(5, "\"What’s this? A pill bottle? Prescription from Fairview Hospital . . . take as needed for the Turning.\""));
                DialogueBox.QueueDialogue(new KeyValuePair <int, string>(3, "*Click the bottle in your inventory to take a pill.*"));
            }
            else if (collision.gameObject.name == "CureList")
            {
                item.pickUp("cureList");
                List.pickedUp = true;
            }
            else if (item.puzzle != null)
            {
                SceneMan.ActivatePuzzle(item.puzzle);
            }

            if (collision.gameObject.name == "Ingredient1")
            {
                FreezePlayer.Instance.puzzleIsOpen = true;
                item.pickUp("ingredient1");
            }
            else if (collision.gameObject.name == "Ingredient2")
            {
                FreezePlayer.Instance.puzzleIsOpen = true;
                item.pickUp("ingredient2");
            }
            else if (collision.gameObject.name == "Ingredient3")
            {
                FreezePlayer.Instance.puzzleIsOpen = true;
                item.pickUp("ingredient3");
            }
            else if (collision.gameObject.name == "Ingredient4")
            {
                item.pickUp("ingredient4");
            }
            //Debug.Log("Got an inventory item");
        }
        else if ("LabBench".Equals(collision.gameObject.tag))
        {
            bench.makeCure();
        }
        else if ("Exit".Equals(collision.gameObject.tag))
        {
            ExitDoorBehavior door = collision.gameObject.GetComponent <ExitDoorBehavior>();
            if (!door.isLocked)
            {
                SceneManager.LoadScene("WinMenu");
            }
        }
        else
        {
            Debug.Log("(PLAYER): Notice- Collided with object with unprocessed tag. Object Name: \"" + collision.gameObject.name + "\"   Object Tag: \"" + collision.gameObject.tag + "\"");
        }
    }
Пример #14
0
    //Update
    protected override void step()
    {
        base.step();

        //Movement
        Vector2 velocity = Vector2.zero;

        if (zombie == true)
        {
            //Check for Player or Humans
            GameObject        player = GameObject.FindGameObjectWithTag("Player");
            List <GameObject> humans = new List <GameObject>(GameObject.FindGameObjectsWithTag("Human"));
            humans.Add(player);

            bool    near       = false;
            Vector2 near_pos   = Vector2.zero;
            Vector2 target_pos = Vector2.zero;

            for (int i = 0; i < humans.Count; i++)
            {
                if (Vector2.Distance(humans[i].transform.position, transform.position) <= aware_r)
                {
                    near     = true;
                    near_pos = humans[i].transform.position;
                    break;
                }
            }

            //Move towards Door or Humans
            if (near)
            {
                target_pos = near_pos;
            }
            else
            {
                if (!door_found)
                {
                    GameObject[]        doors    = GameObject.FindGameObjectsWithTag("Door");
                    List <DoorBehavior> up_doors = new List <DoorBehavior>();

                    for (int i = 0; i < doors.Length; i++)
                    {
                        if (level == LevelManager.instance.getLevelNum(doors[i].transform.position.y))
                        {
                            if (doors[i].GetComponent <DoorBehavior>().up)
                            {
                                up_doors.Add(doors[i].GetComponent <DoorBehavior>());
                            }
                        }
                    }

                    if (up_doors.Count > 0)
                    {
                        door_found = true;
                        door       = up_doors[Random.Range(0, up_doors.Count)];
                    }
                    else
                    {
                        target_pos = player.transform.position;
                    }
                }
                else
                {
                    target_pos = new Vector2(door.transform.position.x, door.transform.position.y);
                }
            }

            if (transform.position.x < target_pos.x)
            {
                velocity.x = spd;
            }
            else if (transform.position.x > target_pos.x)
            {
                velocity.x = -spd;
            }

            //Move Up Doors
            if (door_move)
            {
                transform.position = door.findDoor();
                level = LevelManager.instance.getLevelNum(transform.position.y);

                door_move  = false;
                door_found = false;
                door       = null;
            }
        }
        else
        {
        }

        transform.position = new Vector2(transform.position.x + velocity.x, LevelManager.instance.getLevelY(level));
    }
Пример #15
0
    void Interact()
    {
        Ray              ray = Camera.main.ViewportPointToRay(new Vector3(0.5f, 0.5f, 0));
        RaycastHit       hit;
        Transform        transf;
        PlayerProperties pp = GameObject.Find("Player").GetComponent <PlayerProperties>();

        if (Physics.Raycast(ray, out hit, 3))
        {
            transf = hit.transform;
            while (transf.parent != null && transf.parent.name != "Level")
            {
                transf = transf.parent;
            }

            string name  = transf.transform.name;
            bool   mouse = Input.GetMouseButtonDown(1);
            if (name == "UnlitTorch" && pp.hasTinderbox && mouse)
            {
                transf.name = "Torch";
                transf.GetComponent <Light>().enabled = true;
                transf.GetChild(0).GetComponent <ParticleSystem>().enableEmission = true;
                transf.GetComponent <TorchBehavior>().lit = true;
                GameObject.Find("Sound").GetComponent <Sound>().lightTorch.Play();
            }
            else if (name == "UnlitTorch" && pp.hasTinderbox)
            {
                lookAt = UNLIT_TORCH;
            }
            else if (name == "UnlitTorch")
            {
                lookAt = UNLIT_TORCH_NO_TINDERBOX;
            }
            else if (name == "Key" && mouse)
            {
                GameObject.Find("Player").GetComponent <PlayerProperties>().keys.Add(transf.gameObject.GetComponent <SpriteRenderer>().color);
                GameObject.Find("Sound").GetComponent <Sound>().pickupKey.Play();
                Destroy(transf.gameObject);
            }
            else if (name == "Key")
            {
                lookAt = KEY;
            }
            else if (name == "Door" && mouse)
            {
                DoorBehavior db   = transf.GetComponent <DoorBehavior>();
                List <Color> keys = pp.keys;
                if (db.unlocked)
                {
                    transf.GetComponent <DoorBehavior>().Toggle();
                }
                else if (keys.Count == 0 || GetKey(pp, transf.gameObject) == -1)
                {
                    if (!GameObject.Find("Sound").GetComponent <Sound>().doorLocked.isPlaying)
                    {
                        GameObject.Find("Sound").GetComponent <Sound>().doorLocked.Play();
                    }
                }
                else if (GetKey(pp, transf.gameObject) != -1)
                {
                    transf.GetComponent <DoorBehavior>().Toggle();
                    transf.GetComponent <DoorBehavior>().unlocked = true;
                    GameObject.Find("Player").GetComponent <PlayerProperties>().keys.RemoveAt(GetKey(pp, transf.gameObject));
                }
            }
            else if (name == "Door" && !transf.GetComponent <DoorBehavior>().unlocked)
            {
                lookAt   = LOCKED_DOOR;
                doorLook = transf.gameObject;
            }
            else if (name == "Door" && transf.GetComponent <DoorBehavior>().unlocked)
            {
                lookAt   = UNLOCKED_DOOR;
                doorLook = transf.gameObject;
            }
            else if (name == "Lever" && mouse)
            {
                transf.GetComponent <LeverBehavior>().Toggle();
            }
            else if (name == "Lever")
            {
                lookAt = LEVER;
            }
            else if (name == "DoorLever" && !transf.GetComponent <DoorBehavior>().unlocked)
            {
                lookAt = LOCKED_DOOR_LEVER;
            }
            else if (name == "PressurePlate" && !transf.GetComponent <PressurePlateBehavior>().triggered)
            {
                lookAt = PRESSURE_PLATE_UNTRIGGERED;
            }
            else if (name == "PressurePlate")
            {
                lookAt = PRESSURE_PLATE_TRIGGERED;
            }
            else if (name == "DoorPressurePlate")
            {
                lookAt = LOCKED_DOOR_PRESSURE_PLATE;
            }
            else if (name == "Crate" && !pp.isCarrying && mouse)
            {
                Destroy(transf.gameObject);
                GetComponent <PlayerProperties>().isCarrying = true;
                GameObject.Find("Sound").GetComponent <Sound>().pickupBox.Play();
            }
            else if (name == "Crate" && !pp.isCarrying)
            {
                lookAt = CRATE;
            }
            else if (name == "Crate")
            {
                lookAt = CRATE_ALREADY_CARRYING;
            }
            else if (name == "Pistol" && mouse)
            {
                transf.parent = transform.GetChild(0);
                transf.GetComponent <PickupableBehavior>().enabled = false;
                transf.GetComponent <BoxCollider>().enabled        = false;
                transf.localPosition = new Vector3(-0.5f, -0.4f, 1);
                transf.localRotation = Quaternion.identity;
                transf.Rotate(new Vector3(0, 270, 0));
                transf.gameObject.layer = 8;

                GameObject.Find("Sound").GetComponent <Sound>().pickupPistol.Play();
            }
            else if (name == "Pistol")
            {
                lookAt = PISTOL;
            }
            else if (name == "Shotgun" && mouse)
            {
                transf.parent = transform.GetChild(0);
                transf.GetComponent <PickupableBehavior>().enabled = false;
                transf.GetComponent <BoxCollider>().enabled        = false;
                transf.localPosition = new Vector3(-0.5f, -0.4f, 1);
                transf.localRotation = Quaternion.identity;
                transf.Rotate(new Vector3(0, 270, 0));
                transf.gameObject.layer = 8;

                GameObject.Find("Sound").GetComponent <Sound>().pickupShotgun.Play();
            }
            else if (name == "Shotgun")
            {
                lookAt = SHOTGUN;
            }
            else if (name == "SMG" && mouse)
            {
                transf.parent = transform.GetChild(0);
                transf.GetComponent <PickupableBehavior>().enabled = false;
                transf.GetComponent <BoxCollider>().enabled        = false;
                transf.localPosition = new Vector3(-0.5f, -0.4f, 1);
                transf.localRotation = Quaternion.identity;
                transf.Rotate(new Vector3(0, 270, 0));
                transf.gameObject.layer = 8;

                GameObject.Find("Sound").GetComponent <Sound>().pickupSMG.Play();
            }
            else if (name == "SMG")
            {
                lookAt = SMG;
            }
            else if (name == "Tinderbox" && mouse)
            {
                GetComponent <PlayerProperties>().hasTinderbox = true;
                Destroy(transf.gameObject);

                GameObject.Find("Sound").GetComponent <Sound>().pickupTinderbox.Play();
            }
            else if (name == "Tinderbox")
            {
                lookAt = TINDERBOX;
            }
            else
            {
                lookAt = -1;
            }

            if (pp.isCarrying && (name == "Floor" || name == "HalfBlock" || name == "PressurePlate") && mouse)
            {
                float x = hit.point.x;
                float y = 1;
                float z = hit.point.z;
                if (name == "HalfBlock")
                {
                    y = 1.15f;
                }
                else if (name == "PressurePlate")
                {
                    y = 1.2f;
                }

                GameObject crate = (GameObject)Instantiate(cratePf, new Vector3(x, y, z), Quaternion.identity);
                crate.name             = "Crate";
                crate.transform.parent = GameObject.Find("Level").transform;

                GetComponent <PlayerProperties>().isCarrying = false;
                GameObject.Find("Sound").GetComponent <Sound>().dropBox.Play();
            }
            else if (pp.isCarrying && (name == "Floor" || name == "HalfBlock" || name == "PressurePlate"))
            {
                lookAt = CRATE_PLACE;
            }
        }
    }
Пример #16
0
 void Start()
 {
     playerProgression       = playerProgressionObject.GetComponent <PlayerProgression>();
     playerProgressionObject = null;
     doorBehavior            = gameObject.GetComponent <DoorBehavior> ();
 }
Пример #17
0
 public void lockDoor(DoorBehavior door, List <DoorBehavior> list)
 {
     door.setOpenable(false);
     list.Remove(door);
 }