Пример #1
0
    public override void SetAni(eMobAniST ani)
    {
        if (mPrevAni != ani)
        {
            if (mPrevAni == eMobAniST.Hang)
            {
                base.SetAni(eMobAniST.Unhang);

                if (HangTask.MyCeiling != null)
                {
                    FlowerBat_Task_Hang.HangWalls.Remove(HangTask.MyCeiling.gameObject);
                }

                GetComponent <BoxCollider2D>().size = Size;
                bUnHang      = true;
                mHitImmunity = true;
                mPrevAni     = ani;
                return;
            }
            mPrevAni = ani;
        }
        if (bUnHang)
        {
            Dir2d    = Vector2.zero;
            mPrevAni = eMobAniST.Unhang;
            base.SetAni(eMobAniST.Unhang);
        }
        else
        {
            base.SetAni(ani);
        }
    }
Пример #2
0
    void Animation()
    {
        EndFollowing.Invoke();
        if (m_SEObj.Ani != eMobAniST.Last)
        {
            m_CurAniST = m_SEObj.Ani;
            m_bHurting = false;
            return;
        }
        if (m_bHurting)
        {
            return;
        }

        if (!m_bAttacking)
        {
            if (CanFollow && Follow())
            {
                OnFollowing.Invoke();
            }
        }

        m_CurAniST =
            m_bHurting || m_bAttacking ? m_CurAniST :
            m_groundDetectionData.isGrounded ? Dir != 0 ?
            VelX == 0 ?                  eMobAniST.Idle : eMobAniST.Walk :
            eMobAniST.Idle :
            VelY > 0 ? eMobAniST.AirborneUp :
            eMobAniST.AirborneDown;
    }
Пример #3
0
    public bool RandomMove()
    {
        if (MoveST)  // ● MOVE
        {
            if (StateFrist)
            {
                StateFrist = false;
                Dir2d      = ARandom.Dir2d;
            }
            mCurAniST = eMobAniST.Fly;
        }
        else        // ● IDLE
        {
            Dir2d     = Vector2.zero;
            mCurAniST = eMobAniST.Idle;
        }

        MoveT += Time.deltaTime;
        if (MoveT > MoveTime)
        {
            MoveT      = 0;
            MoveST     = !MoveST;
            MoveTime   = MoveST ? MoveTimeMove : MoveTimeIdle;
            StateFrist = true;
        }
        return(true);
    }
Пример #4
0
 public bool Fall()
 {
     if (m_bFallStart = MobYMoveDetect_Logic.Down(transform.position, m_groundDetectionData.Size, ref m_MoveData))
     {
         m_CurAniST = eMobAniST.AirborneDown;
     }
     return(m_bFallStart);
 }
Пример #5
0
 public virtual void SetAni(eMobAniST ani)
 {
     if (mAnimator.speed == 0)
     {
         AniPlay();
     }
     mCurAniST = ani;
 }
Пример #6
0
    public bool Jump()
    {
        if (m_bJumpStart = MobYMoveDetect_Logic.UP(transform.position, ref m_jumpData, ref m_MoveData))
        {
            m_CurAniST = eMobAniST.AirborneUp;
        }

        return(m_bJumpStart);
    }
Пример #7
0
 virtual public void OnGroundEnter()
 {
     //Debug.Log(m_bFollowJump);
     Jump_Logic.ResetJumpCount(ref m_jumpData);
     m_bFollowJump = false;
     if (m_bHurting)
     {
         return;
     }
     m_CurAniST = eMobAniST.Idle;
 }
Пример #8
0
    public override void OnHurt()
    {
        if (mHitImmunity)
        {
            return;
        }
        mHurt     = true;
        mAniStart = true;
        mCurAniST = eMobAniST.Hit;

        SpriteDir = (GM.PlayerPos.x - transform.position.x) < 0 ? -1 : 1;
    }
Пример #9
0
 public bool IdleRandom()
 {
     if (!m_groundDetectionData.isGrounded)
     {
         return(false);
     }
     if (m_MoveData.State == MobMoveData.eState.Idle)
     {
         m_CurAniST     = eMobAniST.Idle;
         m_MoveData.Dir = 0;
     }
     return(true);
 }
Пример #10
0
    void Animation()
    {
        if (mSE.Ani != eMobAniST.Last)
        {
            mCurAniST = mSE.Ani;
            SetStatusEffectUseAniState();
            return;
        }

        if (!mHurt)
        {
            SpriteDir = Dir2d.x > 0 ? 1 : -1;
        }
    }
Пример #11
0
 public bool MoveRandom()
 {
     if (!m_groundDetectionData.isGrounded)
     {
         return(false);
     }
     m_MoveData.State = MobMoveData.eState.Move;
     m_CurAniST       = eMobAniST.Walk;
     ATimer.Tick(this);
     if (!m_bYMoveCoolTime && !m_bJumpStart)
     {
         m_bYMoveCoolTime = ARandom.Get(70) ? true : ARandom.Get(50) ? Jump() : Fall();
         m_bYMoveCoolTime = true;
         ATimer.Set("JumpFall" + GetInstanceID(), m_MoveData.CoolTime, () => { m_bYMoveCoolTime = false; });
     }
     return(true);
 }
Пример #12
0
 public override void OnHurt(/* 총알 위치 */)
 {
     if (m_SEObj.Ani != eMobAniST.Last)
     {
         return;                                // Ani 우선순위가 Hurt보다 커야함.
     }
     if (m_bAttacking)
     {
         return;
     }
     if (!m_bHurting)
     {
         m_bPrevDir         = m_MoveData.SprDir;
         m_MoveData.SprDir *= (Mathf.Sign(GM.PlayerPos.x - transform.position.x) == m_bPrevDir) ? -1 : 1;
     }
     m_bHurting  = true;
     m_bAniStart = true;
     GetComponentInChildren <AColliderMgr>().Stop();
     if (m_SEObj.Ani == eMobAniST.Last) // Ani 우선순위가 Hurt보다 커야함.
     {
         m_CurAniST = eMobAniST.Hit;
     }
 }
Пример #13
0
    virtual protected void FixedUpdate()
    {
        MovementAction[MS]();

        mRb2d.velocity = Dir2d * (IsJPSVel ? 1f : MoveSpeed) * mSE.SpeedMult * (CheckOverlapSlow(MobSize, Dir2d) ? OverlapSlow : 1f);
        if (mSE.UseSEVel)
        {
            mRb2d.velocity = mSE.EffectDir2d * mSE.SpeedMult;
        }
        if (!mSE.UseSEVelCurve)
        {
            CurveTime = 0f;
        }
        if (mSE.UseSEVelCurve)
        {
            mRb2d.velocity = mSE.EffectDir2d * mSE.VelCurve.Evaluate(CurveTime);
            CurveTime     += Time.fixedDeltaTime;
        }

        Animation();
        mAnimator.SetDuration(m_Ani[mCurAniST].Item2);
        if (mAniStart)
        {
            mAnimator.Play(m_Ani[mCurAniST].Item1, 0, 0);
            mAniStart = false;
        }
        else
        {
            if (prevAni != mCurAniST)
            {
                prevAni = mCurAniST;
                mAnimator.Play(m_Ani[mCurAniST].Item1);
            }
        }
        IsJPSVel = false;
    }
Пример #14
0
 public bool AttackPre()
 {
     m_CurAniST = eMobAniST.Attack_Pre;
     return(m_bAttacking);
 }
Пример #15
0
 public bool Follow()
 {
     Dir2d     = (GM.PlayerPos - Pos).normalized;
     mCurAniST = eMobAniST.Fly;
     return(true);
 }
Пример #16
0
 public bool AttackPost()
 {
     m_CurAniST = eMobAniST.Attack_Post;
     return(m_bAttacking);
 }
Пример #17
0
 virtual protected void Attack()
 {
     mCurAniST = eMobAniST.Attack_Post;
 }
Пример #18
0
 virtual protected void PreAttack()
 {
     mAttacking = true;
     mCurAniST  = eMobAniST.Attack_Pre;
 }
Пример #19
0
 public bool Falling()
 {
     m_CurAniST = m_jumpData.isJumping ? eMobAniST.AirborneUp : eMobAniST.AirborneDown;
     return(true);
 }