Inheritance: MonoBehaviour
Exemplo n.º 1
0
    public override void Enter()
    {
        ranged          = GetComponent <RangedEnemy>();
        distanceToPoint = 1.0f;

        AssignRandom();
    }
Exemplo n.º 2
0
    // if an enemy is in the collision area, apply damage to that enemy
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.CompareTag("meleeEnemy"))
        {
            EnemyController meleeEnemy = collision.GetComponent <EnemyController>();
            meleeEnemy.TakeDamage(3);
            GameObject aoeEffect = Instantiate(explosion, transform.position, Quaternion.identity);
            aoeEffect.GetComponent <Animator>().SetTrigger("Explode");

            Destroy(aoeEffect, 1.0f);
        }

        if (collision.CompareTag("rangedEnemy"))
        {
            RangedEnemy rangedEnemy = collision.GetComponent <RangedEnemy>();
            rangedEnemy.TakeDamage(3);
            GameObject aoeEffect = Instantiate(explosion, transform.position, Quaternion.identity);
            aoeEffect.GetComponent <Animator>().SetTrigger("Explode");

            Destroy(aoeEffect, 1.0f);
        }

        if (collision.CompareTag("Boss"))
        {
            if (collision.name == "Flame Knight(Clone)")
            {
                FlameKnightController controller = collision.GetComponent <FlameKnightController>();
                controller.TakeDamage(3);
                GameObject aoeEffect = Instantiate(explosion, transform.position, Quaternion.identity);
                aoeEffect.GetComponent <Animator>().SetTrigger("Explode");

                Destroy(aoeEffect, 1.0f);
            }
        }
    }
Exemplo n.º 3
0
    void GruntRound()
    {
        int crrtBeat = Conductor.GetBeat() - FirstBeat;

        // Return early if round has not begun
        if (crrtBeat < 0)
        {
            return;
        }
        // Spawn grunts periodically if round has begun
        if (mNumGruntsSpawned != mNumGrunts && crrtBeat == mNumGruntsSpawned)
        {
            // Play VoicesLine When Grunts Spawn (But Only Once)
            if (mVoiceLineIndex == 1 || mVoiceLineIndex == 3 || mVoiceLineIndex == 5)
            {
                VoiceLines[mVoiceLineIndex++].Play();
            }
            MeleeEnemy enemy = Instantiate(Grunt, GruntSpawns[mNumGruntsSpawned % GruntSpawns.Count].position, Quaternion.identity);
            enemy.Target = Player;
            enemy.HealthController.OnDeath += IncrementGruntKillCount;
            mNumGruntsSpawned += 1;
        }

        if (mNumRangedSpawned != mNumRanged && crrtBeat == mNumRangedSpawned)
        {
            RangedEnemy enemy = Instantiate(RangedGrunt, RangedSpawns[mNumRangedSpawned % RangedSpawns.Count].position,
                                            Quaternion.identity);
            enemy.Target = Player;
            enemy.HealthController.OnDeath += IncrementRangedKillCount;
            mNumRangedSpawned += 1;
        }
    }
Exemplo n.º 4
0
    // this handles the bullet collision
    // if it hits an enemy it creates an explosion effect and does damage to the enemy
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.CompareTag("Collidables"))
        {
            Destroy(gameObject);
        }

        if (collision.CompareTag("meleeEnemy"))
        {
            // create AOE explosion effect
            Instantiate(aoeAttack, collision.transform.position, Quaternion.identity);
            Instantiate(explosionSound, collision.transform.position, Quaternion.identity);

            Destroy(gameObject);
            meleeEnemyController = collision.gameObject.GetComponent <EnemyController>();
            meleeEnemyController.TakeDamage(setDamage);
            RoomEvent.bulletsHitEnemy += 1;
            GameObject hitAnimation = Instantiate(bulletHitAnimation, collision.transform.position, Quaternion.identity);
            hitAnimation.GetComponent <Animator>().SetTrigger("BulletHit");
            Destroy(hitAnimation, 2.0f);
        }

        if (collision.CompareTag("rangedEnemy"))
        {
            // create AOE explosion effect
            Instantiate(aoeAttack, collision.transform.position, Quaternion.identity);
            Instantiate(explosionSound, collision.transform.position, Quaternion.identity);

            Destroy(gameObject);

            rangedEnemeyController = collision.gameObject.GetComponent <RangedEnemy>();
            rangedEnemeyController.TakeDamage(setDamage);
            RoomEvent.bulletsHitEnemy += 1;
            GameObject hitAnimation = Instantiate(bulletHitAnimation, collision.transform.position, Quaternion.identity);
            hitAnimation.GetComponent <Animator>().SetTrigger("BulletHit");
            Destroy(hitAnimation, 2.0f);
        }

        if (collision.CompareTag("Boss"))
        {
            print(collision.name);
            if (collision.name == "Flame Knight(Clone)")
            {
                FlameKnightController controller =
                    GameObject.FindGameObjectWithTag("Boss").GetComponent <FlameKnightController>();

                Instantiate(aoeAttack, transform.position, Quaternion.identity);
                Instantiate(explosionSound, collision.transform.position, Quaternion.identity);

                controller.TakeDamage(setDamage);

                GameObject hitAnimation = Instantiate(bulletHitAnimation, transform.position, Quaternion.identity);
                hitAnimation.GetComponent <Animator>().SetTrigger("BulletHit");
                Destroy(gameObject);
                Destroy(hitAnimation, 2.0f);
            }
        }
    }
Exemplo n.º 5
0
    public override void Enter()
    {
        ranged = GetComponent <RangedEnemy>();

        destination_done = false;

        search_position = true;

        ranged.shoot = false;
    }
Exemplo n.º 6
0
    public override void Enter()
    {
        ranged = GetComponent <RangedEnemy>();

        timer = 0;

        ranged.enemy_navmesh.ResetPath();

        ranged.enemy_navmesh.isStopped = false;
    }
Exemplo n.º 7
0
    public override void Enter()
    {
        ranged = GetComponent <RangedEnemy>();

        ranged.myMeshRenderer.material = ranged.staggerMaterial;
        if (ranged.currentHealth > 0)
        {
            ranged.enemy_navmesh.isStopped = true;
        }
        timer = 0;
    }
Exemplo n.º 8
0
    // checks the timers and either applies damage to the target or destroys the game object
    void Update()
    {
        audioSource.volume = 0.4f * GameController.sfxVolume;
        // run a check to see if it's time to kill the DOT
        if (runningSecondsToRunDOT <= 0)
        {
            Destroy(gameObject);
        }
        else
        {
            runningSecondsToRunDOT -= Time.deltaTime;
        }


        // run a check to see if it's time to apply damage
        if (runningSecondsToApplyDamage <= 0)
        {
            if (gameObject.transform.parent.CompareTag("meleeEnemy"))
            {
                EnemyController meleeEnemy = gameObject.transform.parent.GetComponent <EnemyController>();
                meleeEnemy.PlayPoisonDamageAnimation();
                audioSource.Play();
                meleeEnemy.TakeDamage(2);
            }
            else if (gameObject.transform.parent.CompareTag("rangedEnemy"))
            {
                RangedEnemy rangedEnemy = gameObject.transform.parent.GetComponent <RangedEnemy>();
                rangedEnemy.PlayPoisonDamageAnimation();
                audioSource.Play();
                rangedEnemy.TakeDamage(2);
            }
            else if (gameObject.transform.parent.CompareTag("Boss"))
            {
                if (gameObject.transform.parent.name == "Flame Knight(Clone)")
                {
                    FlameKnightController controller =
                        GameObject.FindGameObjectWithTag("Boss").GetComponent <FlameKnightController>();
                    controller.PlayPoisonDamageAnimation();
                    audioSource.Play();
                    controller.TakeDamage(2);
                }
            }
            // need to add this stuff to the boss(es).
            runningSecondsToApplyDamage = totalSecondsToApplyDamage;
        }
        else
        {
            runningSecondsToApplyDamage -= Time.deltaTime;
        }
    }
Exemplo n.º 9
0
 private void OnCollisionEnter(Collision collision)
 {
     if (collision.gameObject.tag == "MeleeEnemy")
     {
         MeleeEnemy meleeEnemy = collision.gameObject.GetComponent <MeleeEnemy>();
         meleeEnemy.DoDamage();
         Destroy(gameObject);
     }
     else if (collision.gameObject.tag == "RangedEnemy")
     {
         RangedEnemy rangedEnemy = collision.gameObject.GetComponent <RangedEnemy>();
         rangedEnemy.DoDamage();
         Destroy(gameObject);
     }
 }
Exemplo n.º 10
0
 // OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
 override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
 {
     go         = animator.gameObject;
     player     = GameObject.Find("Player");
     viewRadius = go.GetComponent <RangedEnemy>().viewRadius;
     Weapon     = animator.transform.Find("Weapon");
     Head       = animator.transform.Find("Head");
     //xScale = enemyScript.enemyFlipScale;
     isAiming    = animator.GetBool("isAiming");
     isFiring    = animator.GetBool("isFiring");
     timerFire   = false;
     enemyScript = go.gameObject.GetComponent <RangedEnemy>();
     rb          = go.GetComponent <Rigidbody2D>();
     anim        = animator;
 }
Exemplo n.º 11
0
    public void KillRangedEnemy(RangedEnemy enemy)
    {
        currentEnemies--;                                  // Subtract 1 from the current enemies alive.
        enemy.gameObject.SetActive(false);                 // Set the enemy to inactive (destroy but using an efficient object pooler).
        op.RequeueObject("RangedEnemy", enemy.gameObject); // Requeue the enemy into the object pooler.
        kills++;                                           // Increase the amount of kills by 1.
        combo++;                                           // Increase the combo by 1.
        score     += scorePerKill + (comboBonus * (combo - 1));
        resetCombo = Time.time + comboTimer;               // Set the next time the combo should be reset if we don't get any kills.
        UpdateHUD();                                       // Update the HUD to reflect all of the new stats.

        if (kills % killsPerNewEnemy == 0 && kills <= 200)
        {                                                                                                                                 // We have reached a new kill milestone and haven't maxed out our players yet.
            maxEnemyRespawnTimer = Mathf.Clamp(maxEnemyRespawnTimer - enemyRespawnDecrement, minEnemyRespawnTimer, maxEnemyRespawnTimer); // Reduce the max timer by how much we should decrement then clamp it so it doesn't go below the minimum.

            enemies++;                                                                                                                    // Increase the amount of enemies we are allowed to have spawned.
        }
    }
Exemplo n.º 12
0
    //private bool canMove;
    // Use this for initialization
    void Start()
    {
        maxEnemies = 4;
        meleeEnemyReference = meleeprefab.GetComponent<MeleeEnemy> ();
        rangedEnemyReference = rangedprefab.GetComponent<RangedEnemy> ();
        GameObject[] enemyObjs;
        //gray;// = GameObject.Find ("Grayout").GetComponent<SpriteRenderer>();

        player = GameObject.Find("Player").GetComponent<PlayerCharacter>();
        puzzle = GameObject.Find ("PuzzleManager").GetComponent<PuzzleManager> ();
        enemyObjs = GameObject.FindGameObjectsWithTag("enemy");
        enemies = new List<Enemy>();
        for (int i = 0; i < enemyObjs.Length; i++) {
            enemies.Add(enemyObjs[i].GetComponent<Enemy>());
        }
        //canMove = true;
        spawnTimer = 0;
        coolDownTimer = 5;
        turn = 1;
        enemyCount = 0;
    }
Exemplo n.º 13
0
    //private bool canMove;

    // Use this for initialization
    void Start()
    {
        maxEnemies           = 4;
        meleeEnemyReference  = meleeprefab.GetComponent <MeleeEnemy> ();
        rangedEnemyReference = rangedprefab.GetComponent <RangedEnemy> ();
        GameObject[] enemyObjs;
        //gray;// = GameObject.Find ("Grayout").GetComponent<SpriteRenderer>();

        player    = GameObject.Find("Player").GetComponent <PlayerCharacter>();
        puzzle    = GameObject.Find("PuzzleManager").GetComponent <PuzzleManager> ();
        enemyObjs = GameObject.FindGameObjectsWithTag("enemy");
        enemies   = new List <Enemy>();
        for (int i = 0; i < enemyObjs.Length; i++)
        {
            enemies.Add(enemyObjs[i].GetComponent <Enemy>());
        }
        //canMove = true;
        spawnTimer    = 0;
        coolDownTimer = 5;
        turn          = 1;
        enemyCount    = 0;
    }
Exemplo n.º 14
0
    void OnTriggerEnter2D(Collider2D col)
    {
        if (col.gameObject.name == "SwordEnemy(Clone)")
        {   // We collided with a sword enemy.
            SwordEnemy swordEnemy = col.gameObject.GetComponent <SwordEnemy>();

            if (deadly)
            {   // We are currently dashing, kill enemy.
                gm.KillSwordEnemy(swordEnemy);
            }
            else if (swordEnemy.deadly)
            {   // The enemy is dashing and we are vulnerable, die.
                gm.KillPlayer(this);
            }
        }
        else if (col.gameObject.name == "RangedEnemy(Clone)")
        {   // We collided with a ranged enemy.
            RangedEnemy rangedEnemy = col.gameObject.GetComponent <RangedEnemy>();

            if (deadly)
            {   // We are currently dashing, kill enemy.
                gm.KillRangedEnemy(rangedEnemy);
            }
        }
        else if (col.gameObject.name == "Arrow(Clone)")
        {     // We collided with an arrow.
            if (deadly)
            { // We are currently dashing, destroy arrow.
                Destroy(col.gameObject);
            }
            else
            {                            // We are currently vulnerable, die.
                gm.KillPlayer(this);
                Destroy(col.gameObject); // Destroy arrow anyway, it is inside us after all.
            }
        }
    }
Exemplo n.º 15
0
 void Awake()
 {
     _rangedEnemy = transform.parent.GetComponent <RangedEnemy>();
 }
Exemplo n.º 16
0
 public WatchState(RangedEnemy rangedEnemy) : base(rangedEnemy.gameObject)
 {
     _rangedEnemy = rangedEnemy;
     timeLeft     = _rangedEnemy.turnInterval;
     delayLeft    = delay;
 }
Exemplo n.º 17
0
 public AttackState(RangedEnemy rangedEnemy) : base(rangedEnemy.gameObject)
 {
     _rangedEnemy = rangedEnemy;
 }
Exemplo n.º 18
0
    public override void _Process(float delta)
    {
        healthRect.RectScale = new Vector2(GameData.playerHealth / 3.846f, 7f);
        manaRect.RectScale   = new Vector2(GameData.playerMana / 3.846f, 7f);
        score.Text           = "Score: " + GameData.score;
        if (Input.IsActionPressed("power1") && punchRay.IsColliding())
        {
            var target = punchRay.GetCollider();
            for (int i = 0; i < GameData.enemyTypes.Length; i++)
            {
                if (target.GetType().ToString() == GameData.enemyTypes[i])
                {
                    switch (GameData.enemyTypes[i])
                    {
                    case "Enemy":                                   //didn't really know how else to do this
                    {
                        Enemy enemy = target as Enemy;
                        enemy.Hit(damage);
                        break;
                    }

                    case "RangedEnemy":
                    {
                        RangedEnemy rangedEnemy = target as RangedEnemy;
                        rangedEnemy.Hit(damage);
                        break;
                    }

                    default:
                        break;
                    }
                }
            }
        }
        if (Input.IsActionJustPressed("power2") && GameData.playerMana >= 25)                   //Time dash
        {
            GameData.playerMana -= 25;
        }
        if (Input.IsActionJustPressed("power3") && GameData.playerMana >= 50)                   //Time Evasion (evade all attacks for a few seconds)
        {
            timeEvasion = true;
        }
        if (Input.IsActionJustPressed("power4") && GameData.playerMana >= 100)                  //Timestop
        {
            GameData.playerMana -= 100;
            GameData.timeStopped = true;
        }
        if (Input.IsActionJustPressed("ui_cancel"))
        {
            GameData.gamePaused = true;
        }

        if (GameData.playerHealth <= 0)
        {
            if (!dying)
            {
                dying = true;
            }
            if (dyingTimer >= 120 && dyingTimer <= 240)
            {
                darkening.Visible  = true;
                darkening.Modulate = new Color(0f, 0f, 0f, (dyingTimer - 120f) / 120f);
            }
            if (dyingTimer >= 360)
            {
                GetTree().ChangeScene("res://Scenes/TitleScreen.tscn");
            }
        }
    }
Exemplo n.º 19
0
	void Awake ()
    {
        _rangedEnemy = transform.parent.GetComponent<RangedEnemy>();
	}
Exemplo n.º 20
0
    public override void _PhysicsProcess(float delta)
    {
        Vector2 velocity = Vector2.Zero;

        if (CanMove())
        {
            if (Input.IsActionPressed("move_left"))
            {
                velocity.x += moveSpeed;
                direction   = 1;
                playerAnim.Play("Running");
                playerAnim.FlipH = false;
                punchRay.CastTo  = new Vector2(5f, 0f);
            }
            if (Input.IsActionPressed("move_right"))
            {
                velocity.x -= moveSpeed;
                direction   = -1;
                playerAnim.Play("Running");
                playerAnim.FlipH = true;
                punchRay.CastTo  = new Vector2(-7f, 0f);
            }
            if (velocity.x == 0f)
            {
                playerAnim.Play("Idle");
            }
        }
        if (IsOnFloor())
        {
            if (CanMove())
            {
                if (Input.IsActionPressed("power1"))
                {
                    playerAnim.Play("Punching");
                }
                if (Input.IsActionJustPressed("power3"))
                {
                    velocity = Vector2.Zero;
                    dashing  = true;
                }
                if (Input.IsActionJustPressed("jump"))
                {
                    yVel = jumpForce;
                }
            }
            if (dying)
            {
                playerAnim.Play("Dying");
                dyingTimer++;
            }
        }
        if (!IsOnFloor())
        {
            if (yVel <= 0)
            {
                playerAnim.Play("Jumping");
            }
            if (yVel > 0)
            {
                playerAnim.Play("Falling");
            }
            if (yVel < maxGravity)
            {
                yVel += gravity;
            }
            if (dying)
            {
                playerAnim.Play("FallingDying");
                yVel = 15f;
            }
        }
        velocity.y = yVel;

        if (dashing)
        {
            dashTimer++;
            playerAnim.Stop();
            if (dashTimer >= 80)
            {
                GlobalPosition += new Vector2(60f * direction, 0f);
                if (dashRay.IsColliding())
                {
                    var target = dashRay.GetCollider();
                    for (int i = 0; i < GameData.enemyTypes.Length; i++)
                    {
                        if (target.GetType().ToString() == GameData.enemyTypes[i])
                        {
                            switch (GameData.enemyTypes[i])
                            {
                            case "Enemy":                                           //didn't really know how else to do this
                            {
                                Enemy enemy = target as Enemy;
                                enemy.Hit(damage * 8);
                                break;
                            }

                            case "RangedEnemy":
                            {
                                RangedEnemy rangedEnemy = target as RangedEnemy;
                                rangedEnemy.Hit(damage * 8);
                                break;
                            }

                            default:
                                break;
                            }
                        }
                    }
                }
                dashing   = false;
                dashTimer = 0;
            }
        }

        MoveAndSlide(velocity, new Vector2(0, -1));
    }
Exemplo n.º 21
0
 public PatrolState(RangedEnemy rangedEnemy, GameObject[] waypoints) : base(rangedEnemy.gameObject)
 {
     _rangedEnemy = rangedEnemy;
     _waypoints   = waypoints;
     nextWaypoint = waypoints[0];
 }
Exemplo n.º 22
0
    //tätä funktiota kutsutaan pelaajan hyökkäyksessä
    public void TakeDamage()
    {
        /* First Boss */
        if (Boss1)
        {
            Boss1 boss = gameObject.GetComponent <Boss1>();
            if (boss.vulnerable)
            {
                health--;
                SoundManager.PlaySound("BOSSOOF");
                if (health == 0)
                {
                    boss.Die();
                }
                else
                {
                    boss.TakeDamage();
                }
            }
            else
            if (health <= 0)
            {
                Debug.Log("boss counter");
                boss.Counter();
                //kutsutaan pelaajan tappavaa funktioita
            }
        }
        /* Second Boss */
        else if (Boss2)
        {
            health--;

            if (health <= 0)
            {
                gameObject.GetComponent <Boss2>().Die();
            }
        }
        /*ranged ja melee */
        else if (normal)
        {
            RangedEnemy enemy = gameObject.GetComponent <RangedEnemy>();
            if (!enemy.dead)
            {
                SoundManager.PlaySound("DEEPOOF");
                health--;

                if (health <= 0)
                {
                    //kutsutaan vihollisen omaa die funktiota
                    enemy.Die();
                }
            }
        }
        else if (turret)
        {
            SoundManager.PlaySound("EXPLODE");
            health--;

            if (health <= 0)
            {
                //tuhotaan turret animaattorin avustuksella
                gameObject.GetComponent <TurretScript>().Dead();
            }
        }
        else if (charging)
        {
            if (gameObject.GetComponent <ChargingEnemy>().killable)
            {
                health--;

                if (health <= 0)
                {
                    gameObject.GetComponent <ChargingEnemy>().Die();
                }
            }
        }
    }
Exemplo n.º 23
0
 public ChaseState(RangedEnemy rangedEnemy) : base(rangedEnemy.gameObject)
 {
     _rangedEnemy = rangedEnemy;
 }