Exemple #1
0
    protected override void Update()
    {
        if (ScoreManager.Instance.GameController.IsRunning)
        {
            if (nextStateChangeTime == null && HasComeOnScreen)
            {
                nextStateChangeTime = Time.fixedTime + (ScoreManager.Instance.GameController.NPCBaseStateChangeTime * StateChangeTimeMultiplier);
            }
        }
        if (Converted)
        {
            State = BowmanState.WANDER;
        }
        switch (State)
        {
        case BowmanState.WANDER:
            if (this.State == BowmanState.WANDER)
            {
                if (Time.time > nextSpriteChange)
                {
                    SpriteState++;
                    if (Converted && SpriteState == ConvertedSprites.GetLength(0))
                    {
                        SpriteState = 0;
                    }
                    if (!Converted && SpriteState == UnconvertedSprites.GetLength(0))
                    {
                        SpriteState = 0;
                    }
                    if (Converted)
                    {
                        spriteRenderer.sprite = ConvertedSprites[SpriteState];
                    }
                    else
                    {
                        spriteRenderer.sprite = UnconvertedSprites[SpriteState];
                    }
                    nextSpriteChange += AnimateInterval;
                }
            }
            break;

        case BowmanState.READY_FIRE:
            spriteRenderer.sprite = FiringSprites[0];
            break;

        case BowmanState.FIRE:
            spriteRenderer.sprite = FiringSprites[1];
            break;

        case BowmanState.COOLDOWN:
            spriteRenderer.sprite = FiringSprites[1];
            break;
        }
    }
Exemple #2
0
    protected override void DoFrameAction()
    {
        switch (State)
        {
        case BowmanState.WANDER:
            this.Wander();
            if (Time.fixedTime >= nextStateChangeTime)
            {
                State = FireOrWander();
                nextStateChangeTime = Time.fixedTime + (ScoreManager.Instance.GameController.NPCBaseStateChangeTime * StateChangeTimeMultiplier);
            }
            break;

        case BowmanState.READY_FIRE:
            if (Time.fixedTime >= nextStateChangeTime)
            {
                State++;
                nextStateChangeTime = Time.fixedTime + (ScoreManager.Instance.GameController.NPCBaseStateChangeTime * StateChangeTimeMultiplier);
            }
            break;

        case BowmanState.FIRE:
            GameObject projectile = (GameObject)Instantiate(ProjectilePrefab, ArrowSpawnPoint.transform.position, Quaternion.identity);
            projectile.transform.localScale = this.transform.localScale;
            nextStateChangeTime             = Time.fixedTime + (ScoreManager.Instance.GameController.BaseNPCFireCooldown * StateChangeTimeMultiplier);
            State++;
            break;

        case BowmanState.COOLDOWN:
            if (Time.fixedTime >= nextStateChangeTime)
            {
                State = FireOrWander();
                nextStateChangeTime = Time.fixedTime + (ScoreManager.Instance.GameController.NPCBaseStateChangeTime * StateChangeTimeMultiplier);
            }
            break;
        }
    }