예제 #1
0
    //private IEnumerator DeathWait()
    //{
    //    while (IsDead)
    //    {

    //        yield return new WaitForSecondsRealtime(5);

    //    }
    //}

    public override void Death()
    {
        //StartCoroutine(DeathWait());

        //Debug.Log("CouroutineStarted");

        MyRigidbody.velocity = Vector2.zero;
        MyAnimator.SetTrigger("idle");
        health             = Convert.ToInt32(maxHealth);
        transform.position = startPos;

        GameControl.control.coins -= score;
        score = 0;
        SceneManager.LoadScene("GameOver");

        if (scene.name == "Level3" || scene.name == "Level4" || scene.name == "Level5" || scene.name == "Level6" || scene.name == "Level7" || scene.name == "Level8" || scene.name == "Level9")
        {
            MyRigidbody.velocity = Vector2.zero;
            MyAnimator.SetTrigger("idle");
            health             = Convert.ToInt32(maxHealth);
            transform.position = startPos;

            GameControl.control.coins -= score / 2;
            score = 0;
            //SceneManager.LoadScene("Menu");
            SceneManager.LoadScene("GameOver");
        }
    }
예제 #2
0
    public override IEnumerator TakeDamage()
    {
        if (!immortal)
        {
            if (actState != ActState.Defence)
            {
                stat.Health.CurrentVal -= 10;

                if (!IsDead)
                {
                    MyAnimator.SetTrigger("damage");
                    //immortal = true;
                    //StartCoroutine(IndicateImmortal());
                    yield return(new WaitForSeconds(immortalTime));

                    immortal = false;
                }
                else
                {
                    MyAnimator.SetLayerWeight(1, 0);
                    MyAnimator.SetTrigger("die");
                }
            }
            else
            {
                MyAnimator.SetBool("defence", false);
                actState = ActState.Delayed;
                yield return(new WaitForSeconds(0.05f));

                actState = ActState.StandBy;
            }
        }
    }
예제 #3
0
    // Update is called once per frame
    public override void Update()
    {
        //if (healthBar != null && healthBarRect != null)
        //{
        //	healthBarRect.sizeDelta = new Vector2(100.0f, ((float)currHealth / (float)maxHealth) * 145.0f);
        //}
        base.Update();

        if (currHealth <= 0.0f)
        {
            //change to play death animation
            //Destroy(gameObject);
            if (canSetDieTrigger)
            {
                MyAnimator.SetTrigger("die");
                Instantiate(ParticleManager.Instance.DyingParticles, transform.position, Quaternion.identity);
                GameManager.Instance.DestroyAllBulletsAndSpawns();
                if (bouncy != null)
                {
                    bouncy.CanBounce = false;
                }
                canSetDieTrigger = false;
            }
        }
    }
예제 #4
0
    private void HandleMovement(float horizontal)
    {
        if (myRigidbody.velocity.y < 0)
        {
            MyAnimator.SetBool("land", true);
        }

        if (!MyAnimator.GetBool("slide") && (isGrounded || airControl))
        {
            myRigidbody.velocity = new Vector2(horizontal * movementSpeed, myRigidbody.velocity.y);
        }

        if (isGrounded && jump)
        {
            isGrounded = false;
            myRigidbody.AddForce(new Vector2(0, jumpForce));
            MyAnimator.SetTrigger("jump");
        }

        MyAnimator.SetFloat("speed", Mathf.Abs(horizontal));

        if (slide && !this.MyAnimator.GetCurrentAnimatorStateInfo(0).IsName("Slide"))
        {
            MyAnimator.SetBool("slide", true);
        }
        else if (!this.MyAnimator.GetCurrentAnimatorStateInfo(0).IsName("Slide"))
        {
            MyAnimator.SetBool("slide", false);
        }
    }
예제 #5
0
 public override void Death()
 {
     MyRigidbody.velocity = Vector2.zero;
     MyAnimator.SetTrigger("idle");
     healthStat.CurrentVal = healthStat.MaxVal;
     transform.position    = startPos;
 }
예제 #6
0
 public override void Death()
 {
     lives += 1;
     if (lives == 1)
     {
         MyAnimator.SetTrigger("idle");
         healthStat.CurrentVal = healthStat.MaxVal;
         transform.position    = startPos;
         GameObject.FindWithTag("live1").SetActive(false);
     }
     if (lives == 2)
     {
         MyAnimator.SetTrigger("idle");
         healthStat.CurrentVal = healthStat.MaxVal;
         transform.position    = startPos;
         GameObject.FindWithTag("live2").SetActive(false);
     }
     if (lives == 3)
     {
         MyAnimator.SetTrigger("idle");
         healthStat.CurrentVal = healthStat.MaxVal;
         transform.position    = startPos;
         GameObject.FindWithTag("live3").SetActive(false);
         SceneManager.LoadScene("StitchBoy");
     }
 }
예제 #7
0
파일: Enemy.cs 프로젝트: EdTech101/Yare
 public override IEnumerator TakeDamage()
 {
     if (!canvasHealth.isActiveAndEnabled)
     {
         canvasHealth.enabled = true;
     }
     health.CurrentVal -= 10;
     if (!IsDead)
     {
         MyAnimator.SetTrigger("damage");
         if (currentState.GetStateName() == "Patrol" || !(currentState.GetStateName() == "Ranged"))
         {
             ChangeDirection();
         }
     }
     else
     {
         if (dropItem)
         {
             GameObject coin = (GameObject)Instantiate(GameManager.Instance.CoinPrefab, new Vector3(transform.position.x, transform.position.y + 2), Quaternion.identity);
             Physics2D.IgnoreCollision(coin.GetComponent <Collider2D>(), GetComponent <Collider2D>());
             dropItem = false;
         }
         MyAnimator.SetTrigger("die");
         canvasHealth.enabled = false;
     }
     yield return(null);
 }
예제 #8
0
    public override IEnumerator TakeDamage()
    {
        if (!immortal)
        {
            healthStat.CurrentVal -= 10;

            if (!IsDead)
            {
                MyAnimator.SetTrigger("damage");
                audio.PlayOneShot(damageSound);
                immortal = true;
                StartCoroutine(IndicateImmortal());
                yield return(new WaitForSeconds(immmortalTime));

                immortal = false;
            }
            else
            {
                GetComponent <Rigidbody2D>().velocity     = Vector2.zero;
                GetComponent <Rigidbody2D>().gravityScale = 0;
                GetComponent <BoxCollider2D>().enabled    = false;
                MyAnimator.SetLayerWeight(1, 0);
                MyAnimator.SetTrigger("die");

                audio.PlayOneShot(deadSound);
            }
        }
    }
    public override IEnumerator TakeDamage()
    {
        if (!healthCanvas.isActiveAndEnabled)
        {
            healthCanvas.enabled = true;
        }

        healthStat.CurrentVal -= 10;

        if (!IsDead)
        {
            MyAnimator.SetTrigger("damage");
        }
        else
        {
            if (dropItem)
            {
                GameObject sword = (GameObject)Instantiate(GameManager.Instance.SwordPrefab, new Vector3(transform.position.x, transform.position.y + 2), Quaternion.identity);

                Physics2D.IgnoreCollision(sword.GetComponent <Collider2D>(), GetComponent <Collider2D>());

                dropItem = false;
            }


            MyAnimator.SetTrigger("die");
            yield return(null);
        }
    }
예제 #10
0
    public override void Death()
    {
        //To respawn the enemy
        MyAnimator.ResetTrigger("die");
        MyAnimator.SetTrigger("idle");
        if (scene.name == "Level3" || scene.name == "Level2")
        {
            Player.score += 10;
        }
        if (scene.name == "Level4" || scene.name == "Level5" || scene.name == "Level6")
        {
            if (GameControl.control.patent2 == 1)
            {
                Player.score += 10;
            }
        }

        if (scene.name == "Level7" || scene.name == "Level8" || scene.name == "Level9")
        {
            if (GameControl.control.patent3 == 1)
            {
                Player.score += 10;
            }
        }


        GameControl.control.coins += 20;
        //To respawn
        //transform.position = startPos;
        //health = 10;


        //To destroy the enemy
        Destroy(gameObject);
    }
예제 #11
0
 public override void Death()
 {
     MyAnimator.ResetTrigger("die");
     MyAnimator.SetTrigger("idle");
     health             = 30;
     transform.position = startPos;
 }
예제 #12
0
    public override IEnumerator TakeDamage()
    {
        if (!immortal)
        {
            HealthStat.CurrentValue -= 10;

            GameManager.Instance.CollectedCoins--;


            if (!IsDead)
            {
                if (GameManager.Instance.CollectedCoins <= 0)
                {
                    GameManager.Instance.CollectedCoins = 0;
                }
                MyAnimator.SetTrigger("damage");
                immortal = true;
                StartCoroutine(IndicateImmortal());
                yield return(new WaitForSeconds(immortalTime));

                immortal = false;
            }
            else
            {
                MyAnimator.SetLayerWeight(1, 0);
                MyAnimator.SetTrigger("die");
            }
        }
    }
예제 #13
0
파일: Player.cs 프로젝트: arsh3820/arshgame
 private void HandleInput()
 {
     if (Input.GetKeyDown(KeyCode.Space) && !OnLadder && !Falling)
     {
         GetComponent <AudioSource>().PlayOneShot(jump);
         MyAnimator.SetTrigger("jump");
         Jump = true;
     }
     if (Input.GetKeyDown(KeyCode.F))
     {
         GetComponent <AudioSource>().PlayOneShot(aud);
         MyAnimator.SetTrigger("attack");
     }
     if (Input.GetKeyDown(KeyCode.LeftControl))
     {
         MyAnimator.SetTrigger("slide");
     }
     if (Input.GetKeyDown(KeyCode.V))
     {
         GetComponent <AudioSource>().PlayOneShot(knife);
         MyAnimator.SetTrigger("throw");
     }
     if (Input.GetKeyDown(KeyCode.E))
     {
         Use();
     }
 }
예제 #14
0
 public void RestoreHalf()
 {
     MyRigidbody.velocity = Vector2.zero;
     MyAnimator.SetTrigger("idle");
     health             = Convert.ToInt32(maxHealth / 2);
     transform.position = startPos;
 }
예제 #15
0
    private void HandleInput()
    {
        if (Input.GetKeyDown(KeyCode.Space) && !OnLadder)
        {
            MyAnimator.SetTrigger("jump");
        }

        if (Input.GetKeyDown(KeyCode.F))
        {
            MyAnimator.SetTrigger("attack");
        }

        if (Input.GetKeyDown(KeyCode.LeftShift))
        {
            MyAnimator.SetTrigger("slide");
        }

        if (Input.GetKeyDown(KeyCode.G))
        {
            MyAnimator.SetTrigger("throw");
        }

        if (Input.GetKeyDown(KeyCode.E))
        {
            Use();
        }
    }
예제 #16
0
    private void HandleInput()
    {
        if (Input.GetKeyDown(KeyCode.Space) && !OnLadder && !IsFalling)
        {
            MyAnimator.SetTrigger("jump");
        }

        if (Input.GetKeyDown(KeyCode.LeftShift))
        {
            MyAnimator.SetTrigger("attack");
        }

        if (Input.GetKeyDown(KeyCode.LeftControl) && MyRigidbody.velocity.x != 0)
        {
            MyAnimator.SetTrigger("slide");
        }
        if (Input.GetKeyDown(KeyCode.V))
        {
            MyAnimator.SetTrigger("bow");
        }
        if (Input.GetKeyDown(KeyCode.E))
        {
            Use();
        }
    }
예제 #17
0
    public override IEnumerator TakeDamage()
    {
        if (!immortal)
        {
            healthStat.CurrentVal -= 10;
            gruntFx.Play();

            if (!IsDead)
            {
                MyAnimator.SetTrigger("damage");
                immortal = true;
                StartCoroutine(IndicateImmortal());

                yield return(new WaitForSeconds(immortalTime));

                immortal = false;
            }
            else
            {
                playerDie.Play();
                MyAnimator.SetLayerWeight(1, 0);
                MyAnimator.SetTrigger("die");
            }
        }
    }
예제 #18
0
    private void handleMovement(float horizontal)
    {
        if (rb2d.velocity.y < 0)
        {
            MyAnimator.SetBool("Land", true);
        }

        if (!MyAnimator.GetBool("slide") && !this.MyAnimator.GetCurrentAnimatorStateInfo(0).IsTag("Attack") && (isGrounded || airControl))
        {
            rb2d.velocity = new Vector2(horizontal * speed, rb2d.velocity.y);
        }

        if (isGrounded && jump)
        {
            isGrounded = false;
            rb2d.AddForce(new Vector2(0, jumpForce));
            MyAnimator.SetTrigger("Jump");
        }

        if (slide && !this.MyAnimator.GetCurrentAnimatorStateInfo(0).IsName("Slide2"))
        {
            MyAnimator.SetBool("slide", true);
        }
        else if (!this.MyAnimator.GetCurrentAnimatorStateInfo(0).IsName("Slide2"))
        {
            MyAnimator.SetBool("slide", false);
        }

        MyAnimator.SetFloat("speed", Mathf.Abs(horizontal));
    }
예제 #19
0
 public override void Death()
 {
     MyRigidbody.velocity = Vector2.zero;
     MyAnimator.SetTrigger("idle");
     health             = 30;
     transform.position = startPos.position;
 }
예제 #20
0
    /// <summary>
    /// Starts the attack based off of what current animation they are in
    /// </summary>
    public override void AttackHandler()
    {
        float distance = Vector3.Distance(target.transform.position, transform.position);

        if (distance <= attackRange)
        {
            isAttacking = true;

            if (isIdle)
            {
                MyAnimator.SetTrigger("idleStandUp");
                ComboHandler();
            }
            if (isWalking)
            {
                MyAnimator.SetTrigger("walkStandUp");
                ComboHandler();
            }
            if (isRunning)
            {
                MyAnimator.SetTrigger("runStandUp");
                ComboHandler();
            }
        }

        if (isAttacking && distance > attackRange)
        {
            isAttacking = false;
            Idle();
        }
    }
예제 #21
0
    // Hace que el enemigo reciba daño.
    public override IEnumerator TakeDamage()
    {
        if (!healthCavas.isActiveAndEnabled)
        {
            healthCavas.enabled = true;
        }

        //Reduces the health
        healthStat.CurrentValue -= 10;

        if (!IsDead) // Si el enemigo no está muerto ejecuta la animación de recibir daño.
        {
            MyAnimator.SetTrigger("damage");
        }
        else // Si el enemigo está muerto, se asegura de ejecutar la animación de muerte.
        {
            //if (dropItem)
            //{
            //    GameObject coin = (GameObject)Instantiate(GameManager.Instance.CoinPrefab, new Vector3(transform.position.x, transform.position.y + 5), Quaternion.identity);
            //    Physics2D.IgnoreCollision(GetComponent<Collider2D>(), coin.GetComponent<Collider2D>());
            //    dropItem = false;
            //}

            MyAnimator.SetTrigger("die");
            yield return(null);
        }
    }
예제 #22
0
    private void HanldeInput()
    {
        if (PauseMenu.Paused == false)
        {
            if (Input.GetKeyDown(KeyCode.DownArrow) && OnGround)
            {
                MyAnimator.SetTrigger("slide");

                /*attack = true;
                 * jumpAttack = true;*/
            }
            if (Input.GetKeyDown(KeyCode.UpArrow) && !IsFalling)
            {
                MyAnimator.SetTrigger("jump");
            }
            if (Input.GetKeyDown(KeyCode.Z))
            {
                Vulnerable = false;
                MyAnimator.SetTrigger("attack");
            }
            if (Input.GetKeyDown(KeyCode.X))
            {
                MyAnimator.SetTrigger("throw");
            }
        }
    }
예제 #23
0
    //Makes the enemy takes damage
    public override IEnumerator TakeDamage()
    {
        if (!healthCanvas.isActiveAndEnabled)
        {
            healthCanvas.enabled = true;
        }

        //Reduces the health
        healthStat.CurrentVal -= 10;

        //if the enemy is not dead then play the enemy-damage animation
        if (!IsDead)
        {
            MyAnimator.SetTrigger("damage");
        }
        //If the enemy is dead then make sure that we play the dead animation
        else
        {
            if (dropItem)
            {
                GameObject coin = Instantiate(GameManager.Instance.CoinPrefab, new Vector3(transform.position.x, transform.position.y + 2), Quaternion.identity);
                Physics2D.IgnoreCollision(coin.GetComponent <Collider2D>(), GetComponent <Collider2D>());
                dropItem = false;
            }
            MyAnimator.SetTrigger("death");
            yield return(null);
        }
    }
예제 #24
0
    public IEnumerator DPS(float damage, Transform source)
    {
        Enemy enemy = GetComponentInParent <Enemy>();

        yield return(new WaitForSeconds(1));

        if (IsAlive)
        {
            for (int i = 0; i < (damage - 1); i++)
            {
                health.MyCurrentValue -= damage;

                if (IsAlive)
                {
                    CombatTextManager.MyInstance.CreateText(transform.position, damage.ToString(), SCTType.Damage, false);
                    enemy.OnHealthChanged(health.MyCurrentValue);
                    yield return(new WaitForSeconds(1));
                }

                else
                {
                    enemy.OnHealthChanged(health.MyCurrentValue);
                    Direction            = Vector2.zero;
                    myRigidBody.velocity = Direction;
                    GameManager.MyInstance.OnKillConfirmed(this);
                    MyAnimator.SetTrigger("die");
                }
            }
        }
    }
예제 #25
0
    public override IEnumerator TakeDamage(string source)
    {
        if (!immortal)
        {
            if (source == "EnemySword")
            {
                healthStat.CurrentVal -= 20;
            }
            else
            if (source == "EnemyKnife")
            {
                healthStat.CurrentVal -= 20;
            }


            if (!IsDead)
            {
                MyAnimator.SetTrigger("damage");
                immortal = true;

                StartCoroutine(IndicateImmortal());

                yield return(new WaitForSeconds(immortalTime));

                immortal = false;
            }
            else
            {
                MyAnimator.SetLayerWeight(1, 0);
                MyAnimator.SetTrigger("die");
            }
        }
    }
예제 #26
0
    private IEnumerator DamagePlayer()
    {
        health--;
        AudioManager.instance.Play("Damage");
        UIManager.UImanager.TakeDamageUI(health, this.name);

        canMove     = false;
        rb.velocity = new Vector2(0, 0);

        MyAnimator.SetTrigger("Damage");
        MyAnimator.ResetTrigger("Damage");

        shake.CamShake();
        if (this.playerName == "One" && !IsDead())
        {
            GamePad.SetVibration(PlayerIndex.One, 0.1f, 0.1f);
            yield return(new WaitForSeconds(0.7f));

            GamePad.SetVibration(PlayerIndex.One, 0, 0);
        }

        if (this.playerName == "Two" && !IsDead())
        {
            GamePad.SetVibration(PlayerIndex.Two, 0.1f, 0.1f);
            yield return(new WaitForSeconds(0.7f));

            GamePad.SetVibration(PlayerIndex.Two, 0, 0);
        }
    }
예제 #27
0
    public override IEnumerator TakeDamage()
    {
        if (!hudCanvas.isActiveAndEnabled)
        {
            hudCanvas.enabled = true;
        }
        stat.Health.CurrentVal -= 10;

        if (!IsDead)
        {
            MyAnimator.SetTrigger("damage");
        }
        else
        {
            MyAnimator.SetTrigger("die");
            this.GetComponent <Rigidbody2D>().gravityScale = 0;
            this.GetComponent <BoxCollider2D>().enabled    = false;
            //hudCanvas.enabled = false;
            effect.Stop();
            yield return(null);
        }
        yield return(new WaitForSeconds(2f));

        hudCanvas.enabled = false;
    }
    public override IEnumerator TakeDamage()
    {
        if (!immortal)
        {
            healthStat.CurrentValue -= 10;

            if (!IsDead)
            {
                MyAnimator.SetTrigger("damage");
                immortal = true;

                StartCoroutine(IndicateImmortal());
                yield return(new WaitForSeconds(immortalTime));

                immortal = false;
            }
            else
            {
                MyAnimator.SetLayerWeight(1, 0);
                MyAnimator.SetTrigger("die");
                for (int i = 0; i < all.Length; i++)
                {
                    all [i].enabled = false;
                }
            }
        }
    }
예제 #29
0
 protected override void Attack() // Y축의 영향을 받지 않음
 {
     if (RecognitionX <= AttackRange && RecognitionX > -AttackRange)
     {
         MyAnimator.SetTrigger("Attack");
     }
 }
예제 #30
0
    // Update is called once per frame
    public override void Update()
    {
        base.Update();

        _outlineMaterial.SetFloat("_Outline", outlineLength);
        //_outlineMaterial.SetColor("_Color", currColors[currColorEquipped]);

        if (currHealth <= 0.0f)
        {
            //change to play death animation
            //Destroy(gameObject);
            if (canSetDieTrigger)
            {
                MyAnimator.SetTrigger("die");
                Instantiate(ParticleManager.Instance.DyingParticles, transform.position, Quaternion.identity);
                if (bouncy != null)
                {
                    bouncy.CanBounce = false;
                }
                if (r != null)
                {
                    r.canRotate = false;
                }
                GameManager.Instance.DestroyAllBulletsAndSpawns();
                canSetDieTrigger = false;
            }

            /*if (canSwapToDeathMaterial)
             * {
             *  SwapToDeathMaterial();
             *  canSwapToDeathMaterial = false;
             * }*/
        }
    }