Пример #1
0
    // Enemy Attack
    private void SkeletonAttack(Vector3 _enemyDesti)
    {
        // Set Enemey Walk to FALSE
        e_spriteManager.SetMoving(false);

        // Distance between Player and Enemy.
        distanceApart = (transform.position - _enemyDesti).magnitude;
        // Change State to CHASE if Player is outside of Attack Range.
        if (distanceApart > enemyAttackRange)
        {
            skeletonState = EnemySkeletonState.CHASE;
        }

        // Enemy Attack
        // Start CountDownTimer, so that Enemy will deal damage to Player for every x secs.
        canCountDownAttackTimer = true;
        // If Enemy can Attack
        if (canAttack)
        {
            // Reset
            enemyAttackTimer        = 3f;
            canCountDownAttackTimer = false;
            canAttack = false;

            // Start to attack.
            player.GetComponent <Player2D_StatsHolder>().Health -= Calculator.Instance.CalculateDamage(attack, player.GetComponent <Player2D_StatsHolder>().Defense);
            e_spriteManager.SetAttack(true);
        }
    }
Пример #2
0
    // Enemy Walk - waypoint to waypoint
    private void SkeletonPatrol(Vector3 _enemyDesti)
    {
        // Set Enemey Walk to TRUE
        e_spriteManager.SetMoving(true);
        // Distance between Player and Enemy.
        distanceApart = (transform.position - _enemyDesti).magnitude;

        // Change State to CHASE if Player is within its range.
        if (distanceApart < enemyChaseRange)
        {
            skeletonState = EnemySkeletonState.CHASE;
        }

        // Patrolling
        // if reached currwaypointID reached, set nextID to currID
        float dist2waypoint = (GetComponent <Transform>().position - m_Waypoint[m_currWaypointID]).magnitude;

        if (dist2waypoint <= movespeed * Time.deltaTime / maxSpeed) //if it is possible to reach the waypoint by this frame
        {
            ++m_currWaypointID;
            m_currWaypointID %= m_Waypoint.Length;
        }
        else
        {
            // else move towards waypoint
            Vector3 dir = (m_Waypoint[m_currWaypointID] - GetComponent <Transform>().position).normalized;
            GetComponent <Transform>().position += dir * movespeed * Time.deltaTime / maxSpeed;
        }
    }
Пример #3
0
    // Enemy Idle
    private void SkeletonIdle(Vector3 _enemyDesti)
    {
        // Set Enemey Walk to FALSE
        e_spriteManager.SetMoving(false);
        // Distance between Player and Enemy.
        distanceApart = (transform.position - _enemyDesti).magnitude;
        // Change State to CHASE if Player is near.
        if (distanceApart < enemyChaseRange)
        {
            skeletonState = EnemySkeletonState.CHASE;
        }

        // Change State to PATROL if Player is not near, and x secs has passed.
        canCountDownPatrolTimer = true;
        // If Enemy Can Patrol
        if (canPatrol)
        {
            // Reset
            enemyToPatrolTimer      = 5f;
            canCountDownPatrolTimer = false;
            canPatrol = false;

            skeletonState = EnemySkeletonState.PATROL;
        }
    }
Пример #4
0
    // Use this for initialization
    public void Init(int _level)
    {
        player      = GameObject.FindGameObjectWithTag("Player").GetComponent <Player2D_Manager>().gameObject;
        playerStats = GameObject.FindGameObjectWithTag("Player").GetComponent <Player2D_StatsHolder>();

        e_spriteManager = GetComponent <SpriteManager>();
        // set default equipments(will be moved to savefile)
        e_spriteManager.SetHeadEquip(SpriteManager.S_Wardrobe.HEADP_NULL);
        e_spriteManager.SetTopEquip(SpriteManager.S_Wardrobe.TOP_NULL);
        e_spriteManager.SetBottomEquip(SpriteManager.S_Wardrobe.BOTTOM_NULL);
        e_spriteManager.SetShoesEquip(SpriteManager.S_Wardrobe.SHOES_NULL);
        e_spriteManager.SetWeaponEquip(SpriteManager.S_Weapon.DAGGER);

        chasingTimer = 4f;
        maxSpeed     = 5f;

        // Setting Skeleton Initial State as IDLE.
        skeletonState           = EnemySkeletonState.IDLE;
        enemyToPatrolTimer      = 5f;
        canCountDownPatrolTimer = false;
        canPatrol = false;
        // Setting the range for Enemy State to be CHASE.
        enemyChaseRange = 5f;
        // Setting the range for Enemy State to be ATTACk.
        enemyAttackRange        = 1f;
        enemyAttackTimer        = 1f;
        canCountDownAttackTimer = false;
        canAttack = false;

        //Initialize Stats from the leveling system
        enemyLevel     = _level;
        levelingSystem = GetComponent <LevelingSystem>();
        levelingSystem.Init(this, false);
    }
Пример #5
0
    // Handles Player Attack Enemy
    private void PlayerHitEnemy()
    {
        if (GetComponent <CollisionPlayerMelee>().Attacked)
        {
            health -= Calculator.Instance.CalculateDamage(playerStats.Attack, defense);
            GetComponent <CollisionPlayerMelee>().Attacked = false;
        }

        if (health <= 0)
        {
            skeletonState = EnemySkeletonState.DIE;
        }
    }
Пример #6
0
    // Enemy Chase
    private void SkeletonChase(Vector3 _enemyDesti)
    {
        // Set Enemey Walk to TRUE
        e_spriteManager.SetMoving(true);
        // Enemy will walk to Player Position smoothly.
        transform.position = Vector2.SmoothDamp(transform.position, _enemyDesti, ref currentVelocity, chasingTimer, maxSpeed, Time.deltaTime);

        // Distance between Player and Enemy.
        distanceApart = (transform.position - _enemyDesti).magnitude;

        // Change State to ATTACK if Player is within range.
        if (distanceApart < enemyAttackRange)
        {
            GameObject.FindGameObjectWithTag("GameScript").GetComponent <AchievementsManager>().UpdateProperties("ENEMY_FIGHT", 1);

            skeletonState = EnemySkeletonState.ATTACK;
        }
        // Change State to IDLE if Player is outside of Chase Range.
        if (distanceApart > enemyChaseRange)
        {
            skeletonState = EnemySkeletonState.IDLE;
        }
    }