Пример #1
0
 void CheckSkill()
 {
     if (skillController.GetNoSkillAction() && this.IsStatus(GlobalCharacterInfo.CHAR_STATUS.GROUND) && Input.GetKeyDown(KeyCode.C))
     {
         nowStatus |= GlobalCharacterInfo.CHAR_STATUS.SKILL;
     }
 }
Пример #2
0
    void CheckCollision(Collision2D col)
    {
        switch (col.gameObject.tag)
        {
        case "Tile":

            TileType nowTile = col.gameObject.GetComponent <TileScript>().SelectTileType;
            if (nowTile == TileType.GROUND ||
                nowTile == TileType.FLOAT_GROUND)
            {
                nowStatus |= GlobalCharacterInfo.CHAR_STATUS.GROUND;
                jumpcount  = m_stPlayerMove.m_iJumpCount;
            }
            break;

        case "Monster":
            if (IsStatus(GlobalCharacterInfo.CHAR_STATUS.INVINCIBILITY) == false)
            {
                //무적인경우 피해 충돌 ㄴㄴ해
            }
            break;

        case "Trap":
            if (IsStatus(GlobalCharacterInfo.CHAR_STATUS.INVINCIBILITY) == false)
            {
                //무적인경우 피해 충돌 ㄴㄴ해
            }
            break;
        }
    }
Пример #3
0
 void CheckAttack()
 {
     if ((Input.GetKeyDown(KeyCode.Z) || Input.GetKey(KeyCode.Z)) && weaponController.CanAttackMotion())
     {
         nowStatus |= GlobalCharacterInfo.CHAR_STATUS.ATTACK;
     }
 }
Пример #4
0
 void CheckJump()
 {
     // 점프한다
     if (Input.GetKeyDown(KeyCode.X) && jumpcount > 0)
     {
         nowStatus &= ~GlobalCharacterInfo.CHAR_STATUS.GROUND;
         nowStatus |= GlobalCharacterInfo.CHAR_STATUS.JUMP;
         jumpcount--;
         raviValue.tDown = Time.time;
     }
 }
Пример #5
0
    public void ResetCharacterInfo()
    {
        //모든 상태 전부 해제.
        foreach (GlobalCharacterInfo.CHAR_STATUS eachStatus in (GlobalCharacterInfo.CHAR_STATUS[])Enum.GetValues(typeof(GlobalCharacterInfo.CHAR_STATUS)))
        {
            nowStatus &= ~eachStatus;
        }
        //모든 플래그 전부 초기화.
        raviValue = new RavitateFlag();
        moveValue = new MoveFlag();

        nowStatus |= GlobalCharacterInfo.CHAR_STATUS.GROUND;
    }
Пример #6
0
    void CheckRavitate()
    {
        if (isRavitate)
        {
            if (Input.GetKey(KeyCode.X))
            {
                if (raviValue.canRavitate && Time.time - raviValue.tDown > 0.2f)
                {
                    nowStatus            |= GlobalCharacterInfo.CHAR_STATUS.RAVITATE;
                    raviValue.canRavitate = false;
                }
            }

            if (this.IsStatus(GlobalCharacterInfo.CHAR_STATUS.RAVITATE) && Input.GetKeyUp(KeyCode.X))
            {
                nowStatus            &= ~GlobalCharacterInfo.CHAR_STATUS.RAVITATE;
                raviValue.canRavitate = true;
            }
        }
    }
Пример #7
0
 void CheckMove()
 {
     if (Input.GetKeyDown(KeyCode.RightArrow))
     {
         if (moveValue.prevValue == KeyCode.RightArrow && Time.time - moveValue.tDown < 0.5f)
         {
             nowStatus           |= GlobalCharacterInfo.CHAR_STATUS.DASH_MOVE;
             moveValue.moveWeight = DASH_MOVE_WEIGHT;
         }
         else
         {
             nowStatus           |= GlobalCharacterInfo.CHAR_STATUS.MOVE;
             moveValue.moveWeight = MOVE_WEIGHT;
         }
         moveValue.tDown     = Time.time;
         moveValue.prevValue = KeyCode.RightArrow;
     }
     else if (Input.GetKeyDown(KeyCode.LeftArrow))
     {
         if (moveValue.prevValue == KeyCode.LeftArrow && Time.time - moveValue.tDown < 0.5f)
         {
             nowStatus           |= GlobalCharacterInfo.CHAR_STATUS.DASH_MOVE;
             moveValue.moveWeight = -DASH_MOVE_WEIGHT;
         }
         else
         {
             nowStatus           |= GlobalCharacterInfo.CHAR_STATUS.MOVE;
             moveValue.moveWeight = -MOVE_WEIGHT;
         }
         moveValue.tDown     = Time.time;
         moveValue.prevValue = KeyCode.LeftArrow;
     }
     else if (!Input.GetKey(KeyCode.RightArrow) && !Input.GetKey(KeyCode.LeftArrow))
     {
         nowStatus           &= ~GlobalCharacterInfo.CHAR_STATUS.MOVE;
         nowStatus           &= ~GlobalCharacterInfo.CHAR_STATUS.DASH_MOVE;
         moveValue.moveWeight = 0;
     }
 }
Пример #8
0
    void DoingAction()
    {
        if (this.IsStatus(GlobalCharacterInfo.CHAR_STATUS.DEAD))
        {
            //사망 시 1순위 이벤트
        }
        else
        {
            if (this.IsStatus(GlobalCharacterInfo.CHAR_STATUS.HIT))
            {
                //피격 시 2순위 이벤트
            }
            else
            {
                //나머지 3순위 이벤트 모두 동일
                if (this.IsStatus(GlobalCharacterInfo.CHAR_STATUS.MOVE) || this.IsStatus(GlobalCharacterInfo.CHAR_STATUS.DASH_MOVE))
                {
                    transform.localScale = new Vector3(this.moveValue.moveWeight > 0 ? 1 : -1, 1, 1);
                    //이동
                    if (isBlink && this.IsStatus(GlobalCharacterInfo.CHAR_STATUS.DASH_MOVE))
                    {
                        RaycastHit2D rayHitData = Physics2D.Raycast(
                            new Vector2(transform.position.x, transform.position.y),
                            new Vector2(IsRight() ? 1 : -1, 0),
                            m_stPlayerMove.m_fBlinkDistance, 1 << GlobalLayerMask.TERRIAN_MASK);
                        bool    canMaxBlink   = rayHitData.collider ? false : true;
                        Vector3 startPosition = gameObject.transform.position;
                        Vector3 nextPosition  = new Vector3(
                            canMaxBlink ?
                            startPosition.x + (IsRight() ? m_stPlayerMove.m_fBlinkDistance : -m_stPlayerMove.m_fBlinkDistance) :
                            rayHitData.point.x,
                            startPosition.y,
                            startPosition.z);

                        //Blink Action
                        this.transform.position = nextPosition;
                        //Clear Data Blink 직후 멈춰야함.
                        nowStatus           &= ~GlobalCharacterInfo.CHAR_STATUS.DASH_MOVE;
                        moveValue.prevValue  = KeyCode.None;
                        moveValue.moveWeight = 0;

                        StartCoroutine(BlinkAnimation(startPosition, nextPosition, IsRight()));
                    }
                    else
                    {
                        this.transform.Translate(moveValue.moveWeight, 0, 0);
                    }
                }

                if (this.IsStatus(GlobalCharacterInfo.CHAR_STATUS.JUMP))
                {
                    // 점프
                    this.rigid2D.AddForce(transform.up * JUMP_FORCE);
                    nowStatus &= ~GlobalCharacterInfo.CHAR_STATUS.JUMP;
                }

                if (isRavitate && IsStatus(GlobalCharacterInfo.CHAR_STATUS.RAVITATE))
                {
                    float yVel = (rigid2D.velocity.y + Physics.gravity.y) * rigid2D.gravityScale;
                    //Howering
                    rigid2D.AddForce(new Vector2(0, -yVel), ForceMode2D.Force);
                }

                if (this.IsStatus(GlobalCharacterInfo.CHAR_STATUS.ATTACK))
                {
                    // 공격
                    weaponController.AttackMotion();
                    nowStatus &= ~GlobalCharacterInfo.CHAR_STATUS.ATTACK;
                }

                if (this.IsStatus(GlobalCharacterInfo.CHAR_STATUS.SKILL))
                {
                    // 스킬
                    skillController.ActionSkill(selectedCharacterType);
                    nowStatus &= ~GlobalCharacterInfo.CHAR_STATUS.SKILL;
                }
            }
        }
    }
Пример #9
0
 public void ReleaseHold()
 {
     nowStatus &= ~GlobalCharacterInfo.CHAR_STATUS.HOLD;
 }
Пример #10
0
 //Hold 설정
 public void SetHold()
 {
     nowStatus |= GlobalCharacterInfo.CHAR_STATUS.HOLD;
 }
Пример #11
0
 public void ReleaseInvincibility()
 {
     nowStatus &= ~GlobalCharacterInfo.CHAR_STATUS.INVINCIBILITY;
 }
Пример #12
0
 //무적 설정
 public void SetInvInvincibility()
 {
     nowStatus |= GlobalCharacterInfo.CHAR_STATUS.INVINCIBILITY;
 }
Пример #13
0
 bool IsStatus(GlobalCharacterInfo.CHAR_STATUS argStat)
 {
     return((nowStatus & argStat) > 0);
 }