示例#1
0
    void ExecuteState(JamSpace.EState _enemyState)
    {
        switch (_enemyState)
        {
        case JamSpace.EState.NONE:
            break;

        case JamSpace.EState.IDLE:
            moveSpeed = normalSpeed;
            TriggerAnimation(JamSpace.AnimationTags.ANIMATION_IDLE);
            myAnimator.speed = 1;
            break;

        case JamSpace.EState.MONITORING:
            StartCoroutine(CallMonitoring());
            break;

        case JamSpace.EState.ATTACKING:
            Attack();
            break;

        case JamSpace.EState.COOLDOWN:
            StartCoroutine(CallCooldown());
            break;

        case JamSpace.EState.MAX:
            break;

        default:
            break;
        }
    }
示例#2
0
    void ExecuteState(JamSpace.EState _enemyState)
    {
        switch (_enemyState)
        {
        case JamSpace.EState.NONE:
            break;

        case JamSpace.EState.IDLE:
            bCanStartCounter = true;
            TriggerAnimation(JamSpace.AnimationTags.ANIMATION_IDLE);
            break;

        case JamSpace.EState.MONITORING:
            StartCoroutine(CallMonitoring());
            break;

        case JamSpace.EState.ATTACKING:
            StartCoroutine(AfterAttackAnimRoutine());

            break;

        case JamSpace.EState.COOLDOWN:
            StartCoroutine(CallCooldown());
            break;

        case JamSpace.EState.MAX:
            break;

        default:
            break;
        }
    }
示例#3
0
    IEnumerator CallCooldown()
    {
        TriggerAnimation(JamSpace.AnimationTags.ANIMATION_COOLDOWN);
        yield return(new WaitForSeconds(cooldownDur));

        CurrentState = JamSpace.EState.IDLE;
    }
示例#4
0
    private void GetNextPoint()
    {
        if (Mathf.Approximately(point1.position.x, targetPoint.x) &&
            Mathf.Approximately(point1.position.y, targetPoint.y))
        {
            targetPoint   = point2.transform.position;
            isMovingRight = !isMovingRight;
            EvaluateRotation();
        }
        else if (Mathf.Approximately(point2.position.x, targetPoint.x) &&
                 Mathf.Approximately(point2.position.y, targetPoint.y))
        {
            targetPoint   = point1.transform.position;
            isMovingRight = !isMovingRight;
            EvaluateRotation();
        }
        else
        {
            targetPoint = GetRandomPosititonBetweenPoints(ref point1, ref point2);
        }

        moveSpeed = normalSpeed;
        if (currentEState == JamSpace.EState.ATTACKING)
        {
            CurrentState = JamSpace.EState.COOLDOWN;
        }
    }
示例#5
0
    private void OnTriggerStay2D(Collider2D collision)
    {
        if (CurrentState == JamSpace.EState.IDLE)
        {
            var collisionScript = collision.GetComponent <Player.Movement.PlayerCollision>();
            if (collisionScript)
            {
                InvestigatedTargetHealthSetter = collisionScript.GetComponent <Common.HealthSetter>();
                Vector2 _vec2  = this.gameObject.transform.position - InvestigatedTargetHealthSetter.transform.position;
                float   _angle = Vector2.Angle(Vector2.right, _vec2);

                if (_angle <= thetaRange)
                {
                    //_text.text = "monitoring";
                    CurrentState = JamSpace.EState.MONITORING;
                    //ExecuteState(JamSpace.EState.MONITORING);
                }
                else
                {
                    var _tempAngle = 180 - thetaRange;
                    var _subAngle  = _angle - _tempAngle;
                    if (((_subAngle) <= thetaRange) && (_subAngle > 0))
                    {
                        //_text.text = "monitoring";
                        CurrentState = JamSpace.EState.MONITORING;
                    }

                    //_text.text = "not in range";
                }
            }
        }
    }
示例#6
0
    IEnumerator CallAttack()
    {
        TriggerAnimation(JamSpace.AnimationTags.ANIMATION_CHARGE);
        yield return(new WaitForSeconds(wait_attack_position));

        moveSpeed    = normalSpeed;
        CurrentState = JamSpace.EState.IDLE;
    }
示例#7
0
 private void Attack()
 {
     FireProjectileBlast(InvestigatedTargetHealthSetter.transform.position);
     TriggerAnimation(JamSpace.AnimationTags.ANIMATION_CHARGE);
     moveSpeed    = normalSpeed;
     CurrentState = JamSpace.EState.IDLE;
     isInCooldown = true;
     //StartCoroutine(CallAttack());
 }
示例#8
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        var collisionScript = collision.GetComponent <Player.Movement.PlayerCollision>();

        if (collisionScript)
        {
            InvestigatedTargetHealthSetter = collisionScript.GetComponent <Common.HealthSetter>();
            CurrentState = JamSpace.EState.MONITORING;
        }
    }
示例#9
0
    void ReachedEndPoint()
    {
        RotateCharacter();
        moveSpeed = normalSpeed;

        if (CurrentState == JamSpace.EState.ATTACKING)
        {
            CurrentState = JamSpace.EState.COOLDOWN;
        }
    }
示例#10
0
    IEnumerator CallCooldown()
    {
        moveSpeed = normalSpeed;
        //TriggerAnimation(JamSpace.AnimationTags.ANIMATION_COOLDOWN);

        TriggerAnimation(JamSpace.AnimationTags.ANIMATION_IDLE);
        myAnimator.speed = 1;
        yield return(new WaitForSeconds(Wait_Cooldown));

        CurrentState = JamSpace.EState.IDLE;
    }
示例#11
0
    IEnumerator CallMonitoring()
    {
        playerInsideRangeCounter = readyToAttackDur;
        yield return(new WaitForSeconds(readyToAttackDur));

        if (InvestigatedTargetHealthSetter)
        {
            CurrentState = JamSpace.EState.ATTACKING;
        }
        else
        {
            CurrentState = JamSpace.EState.IDLE;
        }
    }
示例#12
0
    IEnumerator CallMonitoring()
    {
        moveSpeed = 0;
        TriggerAnimation(JamSpace.AnimationTags.ANIMATION_INVESTIGATE);
        yield return(new WaitForSeconds(Wait_Monitoring));

        if (InvestigatedTargetHealthSetter)
        {
            CurrentState = JamSpace.EState.ATTACKING;
        }
        else
        {
            CurrentState = JamSpace.EState.IDLE;
        }
    }
示例#13
0
    private void OnTriggerStay2D(Collider2D collision)
    {
        if (!bIsInCooldown)
        {
            var collisionScript = collision.GetComponent <Player.Movement.PlayerCollision>();
            if (collisionScript)
            {
                InvestigatedTargetHealthSetter = collisionScript.GetComponent <Common.HealthSetter>();

                if (bCanStartCounter)
                {
                    CurrentState     = JamSpace.EState.MONITORING;
                    bCanStartCounter = false;
                }
            }
        }
    }
示例#14
0
    IEnumerator CallMonitoring()
    {
        moveSpeed = 0;
        TriggerAnimation(JamSpace.AnimationTags.ANIMATION_INVESTIGATE);
        myAnimator.speed = (1 / (Wait_Monitoring / baseAnim_Monitoring_Time));
        yield return(new WaitForSeconds(Wait_Monitoring));

        if (InvestigatedTargetHealthSetter)
        {
            // fire projectile blast and continue
            CurrentState = JamSpace.EState.ATTACKING;
        }
        else
        {
            CurrentState = JamSpace.EState.IDLE;
        }
    }
示例#15
0
    IEnumerator CallMonitoring()
    {
        moveSpeed = 0;
        TriggerAnimation(JamSpace.AnimationTags.ANIMATION_INVESTIGATE);
        yield return(new WaitForSeconds(Wait_Monitoring));


        if (InvestigatedTargetHealthSetter)
        {
            if (!isEnemy1)
            {
                targetPoint = InvestigatedTargetHealthSetter.gameObject.transform.position;
            }

            CurrentState = JamSpace.EState.ATTACKING;
        }
        else
        {
            CurrentState = JamSpace.EState.IDLE;
        }
    }
示例#16
0
    IEnumerator AfterAttackAnimRoutine()
    {
        TriggerAnimation(JamSpace.AnimationTags.ANIMATION_BITE);
        var playerXPos = InvestigatedTargetHealthSetter.transform.position.x;
        var myXPos     = this.transform.position.x;

        Projectiles.BaseProjectile baseEnemyProj = null;
        var rightDirection = false;

        if (((playerXPos - myXPos) < 0))
        {
            rightDirection = true;
            this.gameObject.transform.rotation = Quaternion.Euler(0, 0, 0);
        }
        else
        {
            rightDirection = false;
            this.gameObject.transform.rotation = Quaternion.Euler(0, 180, 0);
        }

        bIsInCooldown = true;
        CurrentState  = JamSpace.EState.IDLE;
        yield return(new WaitForSeconds(_waitBeforeAnim));

        var zProjectile = 0;
        var pos         = bulletPosition.position;
        var newPos      = new Vector3(pos.x, pos.y, zProjectile);

        if (rightDirection)
        {
            baseEnemyProj = Instantiate(projectilePrefab, newPos, Quaternion.Euler(0, -180, 0)).GetComponent <Projectiles.BaseProjectile>();
            baseEnemyProj.GetComponent <Rigidbody2D>().velocity = speed * baseEnemyProj.transform.right;
        }
        else
        {
            baseEnemyProj = Instantiate(projectilePrefab, newPos, Quaternion.Euler(0, 0, 0)).GetComponent <Projectiles.BaseProjectile>();
            baseEnemyProj.GetComponent <Rigidbody2D>().velocity = speed * baseEnemyProj.transform.right;
        }
    }
示例#17
0
 // Call on enemy activation event
 public override void Init()
 {
     CurrentState = JamSpace.EState.IDLE;
 }