Beispiel #1
0
    public virtual void Init(SpriteRenderer renderer, EnemyDeploy deploy)
    {
        transform.SetLayer(Layers.Enemy);

        transform.localScale = Vector3.one * deploy.scale;

        Deploy       = deploy;
        MainRenderer = renderer;

        HP    = deploy.maxHp;
        HPMax = HP;

        _aniStyle = EnemyMoveStyle.Idle;
        _currPos  = transform.position;

        InitRigid();

        if (!string.IsNullOrEmpty(deploy.AIScript))
        {
            AIMoudle = Common.CreateInstance(deploy.AIScript) as AI_Base;
            if (AIMoudle != null)
            {
                AIMoudle.Init(this);
            }
        }
    }
Beispiel #2
0
    private void UpdateAnimation()
    {
        if (GameSystem.FixedFrameCount < _nextAnimationFrame)
        {
            return;
        }

        if (SpriteDic.TryGetValue(AniStyle, out List <Sprite> sprites))
        {
            if (sprites.Count > 0)
            {
                MainRenderer.sprite = sprites[_currAniIdx];
                _currAniIdx++;


                if (_currAniIdx >= sprites.Count)
                {
                    if (AniStyle == EnemyMoveStyle.Move)
                    {
                        AniStyle = EnemyMoveStyle.MoveIdle;
                    }
                    else
                    {
                        _currAniIdx = 0;
                    }
                }
            }
        }

        _nextAnimationFrame = GameSystem.FixedFrameCount + Deploy.frameSpeed[(int)AniStyle];
    }
Beispiel #3
0
    private void StopMove()
    {
        InMoveToTarget = false;
        InMove         = false;
        AniStyle       = EnemyMoveStyle.Idle;

        if (_moveData != null)
        {
            Pool.Free(_moveData);
        }
    }
Beispiel #4
0
    private void UpdateMoveStyle()
    {
        if (InMoveToTarget || InMove)
        {
            float moveX;
            if (InMove)
            {
                moveX = _moveData.Forward.normalized.x;
            }
            else
            {
                moveX = (_moveTarget - transform.position).normalized.x;
            }

            if (moveX > 0.01f)
            {
                //right
                if (AniStyle != EnemyMoveStyle.MoveIdle)
                {
                    AniStyle = EnemyMoveStyle.Move;
                }

                MainRenderer.flipX = false;
            }
            else if (moveX < 0.01f)
            {
                if (AniStyle != EnemyMoveStyle.MoveIdle)
                {
                    AniStyle = EnemyMoveStyle.Move;
                }

                MainRenderer.flipX = true;
            }
            else
            {
                AniStyle = EnemyMoveStyle.Idle;
            }
        }
        else
        {
            AniStyle = EnemyMoveStyle.Idle;
        }
    }