示例#1
0
    private void OnTriggerExit2D(Collider2D collision)
    {
        if (collision.tag.Equals("Item"))
        {
            Item item = MyGameManager.Instance.getItem(collision.gameObject);
            if (capsuleCollider2D.IsTouching(collision))
            {
                return;
            }

            if (item != null)
            {
                curItems.Remove(item);
            }
            updateHighlighted();
        }
        if (collision.tag.Equals("Task"))
        {
            Task task = MyGameManager.Instance.getTask(collision.gameObject);
            if (capsuleCollider2D.IsTouching(collision))
            {
                return;
            }

            if (task != null)
            {
                curTasks.Remove(task);
            }
            updateHighlighted();
        }
    }
示例#2
0
 public void StrikeCurrentTarget(float damage)
 {
     if (player && enemyCapsuleCollider2D.IsTouching(player.GetComponent <CapsuleCollider2D>()))
     {
         player.GetComponent <PlayerHealth>().TakeDamage(damage);
     }
 }
 // Update is called once per frame
 void Update()
 {
     uninfected = 0;
     foreach (GameObject player in Players)
     {
         if (!player.GetComponent <TaggingManager>().tagged)
         {
             uninfected++;
         }
     }
     if (uninfected == 1 || ((timer.time / 60) <= 1 && (timer.time % 60) <= 30))
     {
         this.GetComponent <SpriteRenderer>().sprite = RedButton;
         for (int i = 0; i < Players.Length; i++)
         {
             if (!Players[i].GetComponent <TaggingManager>().tagged)
             {
                 capsul2D = playerColliders[i];
             }
         }
         if (capsul2D.IsTouching(GetComponent <CircleCollider2D>()))
         {
             winState.playerWinFlag = true;
             timer.stopTimer        = true;
             timerText.text         = "Players Win!";
             StartCoroutine(LoadScene());
         }
     }
 }
 // Update is called once per frame
 void Update()
 {
     if (playerCollider.IsTouching(transitionerCollider))
     {
         changer.FadeToNextLevel();
     }
 }
示例#5
0
 // Update is called once per frame
 void Update()
 {
     if (coin.IsTouching(player))
     {
         GetCoin();
     }
 }
示例#6
0
 private void OnTriggerEnter2D(Collider2D collision)
 {
     if (playerCollider.IsTouching(collision) && collision.tag == "Coins")
     {
         Destroy(collision.gameObject);
         FindObjectOfType <GameController>().CoinCollection();
     }
 }
示例#7
0
 // Update is called once per frame
 void Update()
 {
     if (player.IsTouching(dog))
     {
         new_Controller.health += -1;
         Debug.Log(new_Controller.health);
     }
 }
 private void OnCollisionStay2D(Collision2D collision)
 {
     if (hurtingCollider.IsTouching(playerCollider) && playerCollider.GetComponent <PlayerController>().wasHurt == false)
     {
         playerCollider.GetComponent <PlayerController>().HurtPlayer();
         playerCollider.GetComponent <Rigidbody2D>().MovePosition((Vector2)playerCollider.transform.position + forceToAdd);
         playerCollider.GetComponent <Rigidbody2D>().velocity = Vector2.zero;
     }
 }
示例#9
0
 internal void OnTriggerStay2D(Collider2D collision)
 {
     // Sees Player
     if (detectionRange.IsTouching(collision))
     {
         if (collision.gameObject.CompareTag("Player"))
         {
             seesPlayer = true;
         }
     }
 }
 // Update is called once per frame
 void Update()
 {
     for (int i = 0; i < otherPlayers.Length; i++)
     {
         if (capsule2D.IsTouching(otherPlayers[i].GetComponent <CapsuleCollider2D>()) && otherPlayers[i].GetComponent <TaggingManager>().tagged)
         {
             this.tagged = true;
             GetComponent <SpriteRenderer>().color = Color.red;
         }
     }
 }
示例#11
0
 void checkIfAttack(CapsuleCollider2D capsule)
 {
     if (capsule.IsTouching(player.GetComponent <CircleCollider2D>()))
     {
         if (!isAttacking)
         {
             isAttacking = true;
             animation.SetTrigger("IsAttacking");
             Attack();
         }
     }
 }
示例#12
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (vulnerability)
        {
            if (myBodyCollider.IsTouchingLayers(LayerMask.GetMask("Enemy")) && !(GameObject.Find("Player").transform.position.y >= collision.transform.position.y))
            {
                PlayerInjured();
            }
            else if (myBodyCollider.IsTouchingLayers(LayerMask.GetMask("Enemy")) && GameObject.Find("Player").transform.position.y >= collision.transform.position.y)
            {
                FindObjectOfType <EnemyMovement>().killEnemy(collision.gameObject);
            }
            else if (myBodyCollider.IsTouchingLayers(LayerMask.GetMask("Slippery Enemy")))
            {
                PlayerInjured();
            }

            // Box Boss Damage
            if (GameObject.Find("BoxBoss") != null)
            {
                if (myBodyCollider.IsTouching(FindObjectOfType <BoxBoss>().receiveDamageCollider))
                {
                    FindObjectOfType <BoxBoss>().TakeDamage(5);
                    Debug.Log("Cause Damage 5");
                }
                else if (myBodyCollider.IsTouching(FindObjectOfType <BoxBoss>().causeDamageCollider))
                {
                    PlayerInjured();
                    Debug.Log("Take Damage");
                }
            }
        }
        else if (vulnerability == false)
        {
            if (myBodyCollider.IsTouchingLayers(LayerMask.GetMask("Enemy")) && collision.gameObject.CompareTag("Enemy"))
            {
                FindObjectOfType <EnemyMovement>().killEnemy(collision.gameObject);
            }
        }
    }
示例#13
0
    public void OnCrateCollision()
    {
        int size = crateArray.Length;

        for (int i = 0; i < size; i++)
        {
            if (playerCollider.IsTouching(crateArray[i]))
            {
                isGrabbing   = true;
                grabbedCrate = crateArray[i];
            }
        }
    }
示例#14
0
 private void OnCollisionEnter2D(Collision2D collision)
 {
     if (collision.gameObject == cc2d.IsTouching(collision.collider))
     {
         jump       = false;
         jumpchance = false;
         isGround   = true;
         animator.SetBool("Player_Down", false);
     }
     if (collision.gameObject.layer == 11 || collision.gameObject.layer == 13) //Layer No.11 is Monster, No.13 PassBottomMonster
     {
         GameOver();
     }
 }
示例#15
0
 private void BasicAttack()
 {
     basicAttack.SetActive(true);
     basicAttackTimer = basicAttackTimerReset;
     foreach (string s in damagable)
     {
         foreach (GameObject g in GameObject.FindGameObjectsWithTag(s))
         {
             if (g.PrimaryCollider().enabled&& basicAttackRange.IsTouching(g.PrimaryCollider()))
             {
                 g.PrimaryController().Damage(2);
             }
         }
     }
 }
示例#16
0
 void Update()
 {
     if (player_collider.IsTouching(object_collider))
     {
         if (!button.activeSelf)
         {
             button.SetActive(true);
         }
     }
     else
     {
         if (button.activeSelf)
         {
             button.SetActive(false);
         }
     }
 }
示例#17
0
    // Removes bogies, that have gone stale i.e the last contact is longer ago than timeout parameter
    private void TimeOutBogies()
    {
        int removed = 0;
        // Debug.Log("Bogies before: " + radarBogies.Count);

        ContactFilter2D filter = new ContactFilter2D();

        switch (teamSide)
        {
        case TeamManager.TeamSide.green:
            filter.SetLayerMask(redLayerMask);
            break;

        case TeamManager.TeamSide.red:
            filter.SetLayerMask(greenLayerMask);
            break;
        }

        if (radarState == RadarState.wide || radarState == RadarState.narrow)
        {
            for (int i = 0; i < radarBogies.Count; i++)
            {
                bool touchingRadar = false;
                if (radarBogies[i].bogieObject != null)
                {
                    touchingRadar = radarCollider.IsTouching(radarBogies[i].bogieObject.GetComponent <PolygonCollider2D>());

                    if (!touchingRadar)
                    {
                        removed++;
                        radarBogies.RemoveAt(i);
                    }
                }
            }
        }
        else
        {
            radarBogies.Clear();
        }

        // Debug.Log("removed: " + removed + " nrOfBogies: " + radarBogies.Count);
    }
示例#18
0
    IEnumerator ActivateShield()
    {
        shieldIsActive    = true;
        shield.enabled    = true;
        canActivateShield = false;
        yield return(new WaitForSecondsRealtime(shieldOnTime));

        shield.enabled = false;
        shieldIsActive = false;
        foreach (var enemy in GameObject.FindGameObjectsWithTag("enemy"))
        {
            if (ginaCollider.IsTouching(enemy.GetComponent <BoxCollider2D>()))
            {
                playerDeath();
            }
        }
        yield return(new WaitForSecondsRealtime(shieldCoolDown));

        canActivateShield = true;
    }
示例#19
0
 void Update()
 {
     if (player.isPaused == false)
     {
         if (player_collider.IsTouching(object_collider))
         {
             if (!button.activeSelf)
             {
                 quest_marker.SetActive(false);
                 button.SetActive(true);
             }
         }
         else
         {
             if (button.activeSelf)
             {
                 quest_marker.SetActive(true);
                 button.SetActive(false);
             }
         }
     }
 }
示例#20
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        GameObject dog = collision.gameObject;

        if (collision.gameObject.tag == "Dog" && bc.IsTouching(dog.GetComponent <BoxCollider2D>()))
        {
            Dog ricky = dog.GetComponent <Dog>();
            ricky.FinishAttack();
            Destroy(gameObject);
        }
        else if (collision.gameObject.tag == "Player")
        {
            GameObject player      = GameObject.FindGameObjectWithTag("Player");
            Vector2    vecToPlayer = new Vector2();
            vecToPlayer.x = rb.position.x - player.transform.position.x;
            vecToPlayer.y = rb.position.y - player.transform.position.y;
            float collisionAngle = Vector2.Angle(transform.up, vecToPlayer);

            player.GetComponent <PlayerPlatformerController>().TossPlayer(vecToPlayer);
            player.GetComponent <PlayerPlatformerController>().LoseLife();
        }
    }
示例#21
0
    private IEnumerator Charge(float distance, float chargeSpeed = 0.25f)
    {
        charging    = true;
        dealtDamage = false;
        yield return(new WaitForSeconds(0.4f)); //0.4 sec delay

        Vector2 direction = (Global.player.transform.position - transform.position).normalized;
        Vector2 chargeEnd = (Vector2)transform.position + direction * distance;

        yield return(new WaitForSeconds(0.3f)); //0.3 sec to dodge after aiming

        RaycastHit2D[] hits;
        while (Vector2.Distance(transform.position, chargeEnd) > Mathf.Epsilon)
        {
            int divide = 20; //divide the distance into n parts to prevent passing through walls
            for (int i = 0; i < divide; i++)
            {
                hits = Physics2D.CapsuleCastAll((Vector2)transform.position + col.offset, col.bounds.size, col.direction, 0.0f, direction, chargeSpeed / divide);
                if (hits.Any(hit => hit.collider.gameObject.tag == "Wall"))   //collided with a wall
                {
                    charging = false;
                    yield break;
                }

                transform.position = Vector2.MoveTowards(transform.position, chargeEnd, chargeSpeed / divide);
                if (!dealtDamage && col.IsTouching(Global.player.GetComponent <CapsuleCollider2D>()))
                {
                    //if this charge hits the player, deal damage to player
                    dealtDamage = true;
                    Global.player.GetComponent <PlayerStats>().DealDamage(GetComponent <EnemyStats>().damage);
                }
            }
            transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.y);
            yield return(null);
        }

        charging = false;
    }
示例#22
0
    // Update is called once per frame
    void Update()
    {
        if (armCol.IsTouching(playerCap))
        {
            Physics2D.IgnoreCollision(armCol, playerCap);
        }

        // Arm Rotate
        if (playMove.isKeyboard)
        {
            if (Input.GetKey(KeyCode.I))
            {
                transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.Euler(0, 0, rightAngleMax * Mathf.Sin(Time.deltaTime * rotateSpeed)), rotateSpeed * Time.deltaTime);

                armObj.GetComponent <SpriteRenderer>().color = Color.green;
            }
            else if (Input.GetKey(KeyCode.P))
            {
                transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.Euler(0, 0, leftAngleMax * Mathf.Sin(Time.deltaTime * rotateSpeed)), rotateSpeed * Time.deltaTime);

                armObj.GetComponent <SpriteRenderer>().color = Color.green;
            }
            else
            {
                armObj.GetComponent <SpriteRenderer>().color = Color.white;
            }
        }

        // Ball
        // Hold
        if (Input.GetKey(KeyCode.Space) && ballCS.isTouchingHand)
        {
            ballRig.GetComponent <Rigidbody2D>().simulated = false;

            grabed = true;

            ballCS.gameObject.transform.position = new Vector2(handObj.transform.position.x + 0.5f, handObj.transform.position.y + 0.5f);
            ballCS.gameObject.transform.parent   = handObj.transform;
        }

        if (Input.GetKeyUp(KeyCode.Space)) // throw
        {
            throwBall = true;

            ballCS.gameObject.transform.parent = null;

            ballRig.GetComponent <Rigidbody2D>().simulated = true;
        }

        if (ballCS.isTouchingHand)
        {
            if (grabed)
            {
                if (throwBall)
                {
                    print("Throw New");

                    ballRig.AddForce(new Vector2(125, 75));

                    //ballRig.GetComponent<Rigidbody2D>().AddForce(new Vector2(75f, 10));

                    throwBall = false;

                    grabed = false;
                }
            }
        }
    }
示例#23
0
        // Update is called once per frame
        void Update()
        {
            if (isDead)
            {
                return;
            }

            if (!_collider.IsTouching(bubbleCollider))
            {
                currentAir -= airDrainRate * Time.deltaTime;
                if (currentAir <= 0)
                {
                    StartCoroutine(Die());
                }
                else
                {
                    airMeter.value = currentAir;
                }
            }
            else
            {
                currentAir += airDrainRate * 50 * Time.deltaTime;
                if (currentAir >= maxAir)
                {
                    currentAir = maxAir;
                }
                airMeter.value = currentAir;
            }

            if (canMove)
            {
                horizontalInput = Input.GetAxis("Horizontal");
                verticalInput   = Input.GetAxis("Vertical");

                /*if (canMoveVertically)
                 * {
                 *  verticalInput = Input.GetAxis("Vertical");
                 *
                 * }*/
            }
            else
            {
                horizontalInput = 0;
                verticalInput   = 0;
            }


            if (horizontalInput != 0)
            {
                transform.localScale = new Vector3(Mathf.Sign(horizontalInput), 1, 1);
            }
            _rigidbody.velocity = new Vector2(horizontalInput * movementSpeed, verticalInput * movementSpeed);

            if (hasObjectInHands)
            {
                CarryObject();
            }

            /*else if (Input.GetKey(KeyCode.Space) && !hasObjectInHands)
             * {
             *  TryPickUpItem();
             * }*/
            else if ((this.FocusedObject != null) && Input.GetKey(KeyCode.Space))
            {
                if (this.FocusedObject.TryGetComponent <InteractableItem>(out InteractableItem interactable))
                {
                    if (interactable.canInteract)
                    {
                        interactable.Interact();
                    }
                }
                else if (this.FocusedObject.TryGetComponent <LiftableObject>(out LiftableObject liftable))
                {
                    this.TryPickUpItem(liftable);
                }
                else
                {
                    Debug.LogError($"{name}: the focued object is rrelevant! ({FocusedObject})");
                }
                this.SetFocusOn(null);

                /* #outline
                 * this.SetFocuedOutline(false);
                 */
            }

            /* #scan
             * if(Input.GetKeyDown(KeyCode.Space) && !hasObjectInHands)
             * {
             *  foreach (var button in interactableItemsInScene)
             *  {
             *      if (Vector2.Distance(transform.position, button.transform.position) < interactRadius || _collider.IsTouching(button.GetComponent<Collider2D>()))
             *      {
             *          currentButton = button;
             *          currentButton.Interact(); // TODO: <this
             *          break;
             *      }
             *  }
             *
             *  currentButton = null;
             * }
             */
            _animator.SetFloat("horizontalInput", Mathf.Abs(horizontalInput));
            _animator.SetFloat("verticalInput", Mathf.Abs(verticalInput));

            if ((Mathf.Abs(horizontalInput) > 0.1f || Mathf.Abs(verticalInput) > 0.1f) && !_particleSystem.isPlaying)
            {
                _particleSystem.Play();
            }
            else if (_particleSystem.isPlaying && !((Mathf.Abs(horizontalInput) > 0.1f || Mathf.Abs(verticalInput) > 0.1f)))
            {
                _particleSystem.Stop();
            }
        }
示例#24
0
        // Update is called once per frame
        void Update()
        {
            if (isDead)
            {
                return;
            }

            if (!_collider.IsTouching(bubbleCollider))
            {
                currentAir -= airDrainRate * Time.deltaTime;
                if (currentAir <= 0)
                {
                    StartCoroutine(Die());
                }
                else
                {
                    airMeter.value = currentAir;
                }
            }
            else
            {
                currentAir += airDrainRate * 50 * Time.deltaTime;
                if (currentAir >= maxAir)
                {
                    currentAir = maxAir;
                }
                airMeter.value = currentAir;
            }

            if (canMove)
            {
                horizontalInput = Input.GetAxis("Horizontal");
                verticalInput   = Input.GetAxis("Vertical");

                /*if (canMoveVertically)
                 * {
                 *  verticalInput = Input.GetAxis("Vertical");
                 *
                 * }*/
            }
            else if (!levelFinished)
            {
                horizontalInput = 0;
                verticalInput   = 0;
            }


            if (horizontalInput != 0)
            {
                transform.localScale = new Vector3(Mathf.Sign(horizontalInput), 1, 1);
            }
            _rigidbody.velocity = new Vector2(horizontalInput * movementSpeed, verticalInput * movementSpeed);

            if (hasObjectInHands)
            {
                CarryObject();
            }

            /*else if (Input.GetKey(KeyCode.Space) && !hasObjectInHands)
             * {
             *  TryPickUpItem();
             * }*/
            else if (this.FocusedObject != null)
            {
                if (this.FocusedObject.TryGetComponent <InteractableItem>(out InteractableItem interactable) &&
                    Input.GetKeyDown(KeyCode.Space))
                {
                    if (interactable.canInteract)
                    {
                        interactable.Interact();
                        this.SetFocusOn(null);
                    }
                }
                else if (this.FocusedObject.TryGetComponent <LiftableObject>(out LiftableObject liftable) &&
                         Input.GetKey(KeyCode.Space))
                {
                    this.TryPickUpItem(liftable);
                    this.SetFocusOn(null);
                }
            }
示例#25
0
    // Update is called once per frame
    void Update()
    {
        if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow) || joystick.Horizontal < -xDead)
        {
            direction            = 'L';
            transform.localScale = new Vector3(-1, 1, 1);

            rb.AddForce(new Vector2(-RunForce, 0));

            animr.SetInteger("animState", 1);
        }
        else if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow) || joystick.Horizontal > xDead)
        {
            direction            = 'R';
            transform.localScale = new Vector3(1, 1, 1);
            rb.AddForce(new Vector2(RunForce, 0));
            animr.SetInteger("animState", 1);
        }
        else
        {
            //direction = 'N';
            animr.SetInteger("animState", 0);
        }

        if (Input.GetKeyDown(KeyCode.Space))
        {
            Jump();
            onGround = false;
        }

        if (Input.GetKeyDown(KeyCode.RightControl) || Input.GetKeyDown(KeyCode.LeftControl))
        {
            FireWeapon();
        }

        if (onRamp)
        {
            rb.AddForce(new Vector2(0, rampForce));
        }

        if (cap.IsTouching(ground))
        {
            onGround = true;
        }
        else
        {
            if (onPlatform == false)
            {
                onGround = false;
            }
        }

        if (onGround == false)
        {
            if (onRamp == false)
            {
                animr.SetInteger("animState", 0);
            }
            rb.velocity *= new Vector2(0.995f, 1.0f);
        }
        else
        {
        }
    }