private void OnTriggerExit2D(Collider2D target)
    {
        if (ignoreTrigger)
        {
            return;
        }

        if (target.gameObject.tag == "Player")
        {
            door.CloseDoor();
        }
    }
예제 #2
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.GetComponent <Pickup>())
        {
            print("Picked up a " + collision.name);
            GameManager.TheGameManager.Score += collision.GetComponent <Pickup>().ScorePts;
            collision.gameObject.SetActive(false);
        }
        else if (collision.GetComponent <DoorScript>())
        {
            CurrentDoor = collision.GetComponent <DoorScript>();

            if (CurrentDoor.IsOpen)
            {
                CurrentDoor.CloseDoor();
            }
        }
        else if (collision.CompareTag("Monster"))
        {
            if (Floor == collision.GetComponent <EnemyInfo>().Floor || collision.GetComponent <EnemyInfo>().Floor == 10)
            {
                Die();
            }
        }
    }
예제 #3
0
    // ReleaseObj releases the given object and closes the corresponding door.
    private void ReleaseObj(GameObject obj)
    {
        holdingSomething = false;
        obj.GetComponent <Grabbed>().enabled = false;

        // Close the corresponding door.
        Door.CloseDoor();
    }
예제 #4
0
    private IEnumerator closeDoors(float seconds)
    {
        door1.CloseDoor();
        yield return(new WaitForSeconds(seconds));

        door2.CloseDoor();
        yield return(new WaitForSeconds(seconds));

        door3.CloseDoor();
        StopCoroutine(doorCoroutine);
        StartCoroutine(eyeCoroutine);
    }
예제 #5
0
    private void HandleDoors()
    {
        if (areAllEnemiesDead)
        {
            //Debug.Log("all enemies dead");
            //open the exit scene doors
            if (Door1_Exit != null)
            {
                Door1_Exit.OpenDoor();
            }
            if (Door2_Exit != null)
            {
                Door2_Exit.OpenDoor();
            }
            if (Door3_Exit != null)
            {
                Door3_Exit.OpenDoor();
            }
        }
        else if (startNewLevel)
        {
            Debug.Log("start new level");

            //close all doors
            if (Door1_Exit != null)
            {
                Door1_Exit.CloseDoor();
            }
            if (Door2_Exit != null)
            {
                Door2_Exit.CloseDoor();
            }
            if (Door3_Exit != null)
            {
                Door3_Exit.CloseDoor();
            }

            if (Door1_Entry != null)
            {
                Door1_Entry.CloseDoor();
            }
            if (Door2_Entry != null)
            {
                Door2_Entry.CloseDoor();
            }
            if (Door3_Entry != null)
            {
                Door3_Entry.CloseDoor();
            }
        }
    }
예제 #6
0
 public void InteractWithDoor(Transform door)
 {
     for (int i = 0; i < doorList.Count; i++)
     {
         if (door == doorList[i])
         {
             DoorScript temp = doorList[i].GetComponent <DoorScript>();
             if (!temp.Open)
             {
                 temp.OpenDoor();
             }
             else
             {
                 temp.CloseDoor();
             }
             break;
         }
     }
 }
예제 #7
0
 private void CloseDoor(DoorScript door)
 {
     door.CloseDoor();
 }
예제 #8
0
    private void Update()
    {
        IsGrounded = Physics2D.Linecast(transform.position, transform.position + new Vector3(0, GroundedRaycastLength, 0), 1 << LayerMask.NameToLayer("Land"));

        Debug.DrawLine(transform.position, transform.position + new Vector3(0, GroundedRaycastLength, 0), Color.blue);

        // Doors
        if (Input.GetButtonDown("Vertical"))
        {
            if (CurrentDoor)
            {
                if (CurrentDoor.IsOpen)
                {
                    CurrentDoor.CloseDoor();
                }
                else
                {
                    CurrentDoor.OpenDoor();
                }
            }
            else if (CurrentNavigator)
            {
                Floor = CurrentNavigator.ThisLeadsTo.gameObject.GetComponent <NavigatorScript>().Floor;


                transform.position = CurrentNavigator.ThisLeadsTo.transform.position;
            }
        }

        // Jumping
        if (Input.GetButtonDown("Jump"))
        {
            if (IsGrounded && MyRigid.velocity.y >= 0)
            {
                MyRigid.gravityScale = 1;
                MyRigid.velocity     = new Vector2(0, 0);
                MyRigid.AddForce(new Vector2(0, JumpStrength));
                CanHoldForMore = true;
                CurHoldJump    = 0;
            }
        }
        if (Input.GetButton("Jump") && CanHoldForMore)
        {
            CurHoldJump += Time.deltaTime;
            if (CurHoldJump > HoldJumpCD)
            {
                CanHoldForMore = false;
                CurHoldJump    = 0;
                return;
            }

            if (MyRigid.velocity.y > 0)
            {
                MyRigid.AddRelativeForce(new Vector2(0, JumpStrength * JumpHoldMultiplier * Time.deltaTime));
                MyRigid.gravityScale += Time.deltaTime;
            }
        }

        // Shooting Projectiles
        if (Input.GetButtonDown("Fire1"))
        {
            if (IsGrounded && MyRigid.velocity.y >= 0)
            {
                if (IceBall)
                {
                    if (IceBall.activeInHierarchy)
                    {
                        StopAllMovement = false;
                        return;
                    }
                }

                IceBall = Instantiate(IceBallProjectile, ShootingOrigin.position, Quaternion.identity);
                IceBall.GetComponent <Rigidbody2D>().velocity = new Vector2(ProjectileSpeed * (IsFacingRight ? 1 : -1), 0);
                IceBall.GetComponent <IceBallScript>().Floor  = Floor;
            }
        }


        // Flipping
        if (ShouldFlip())
        {
            Flip();
        }
    }