void CheckSkill() { if (skillController.GetNoSkillAction() && this.IsStatus(GlobalCharacterInfo.CHAR_STATUS.GROUND) && Input.GetKeyDown(KeyCode.C)) { nowStatus |= GlobalCharacterInfo.CHAR_STATUS.SKILL; } }
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; } }
void CheckAttack() { if ((Input.GetKeyDown(KeyCode.Z) || Input.GetKey(KeyCode.Z)) && weaponController.CanAttackMotion()) { nowStatus |= GlobalCharacterInfo.CHAR_STATUS.ATTACK; } }
void CheckJump() { // 점프한다 if (Input.GetKeyDown(KeyCode.X) && jumpcount > 0) { nowStatus &= ~GlobalCharacterInfo.CHAR_STATUS.GROUND; nowStatus |= GlobalCharacterInfo.CHAR_STATUS.JUMP; jumpcount--; raviValue.tDown = Time.time; } }
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; }
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; } } }
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; } }
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; } } } }
public void ReleaseHold() { nowStatus &= ~GlobalCharacterInfo.CHAR_STATUS.HOLD; }
//Hold 설정 public void SetHold() { nowStatus |= GlobalCharacterInfo.CHAR_STATUS.HOLD; }
public void ReleaseInvincibility() { nowStatus &= ~GlobalCharacterInfo.CHAR_STATUS.INVINCIBILITY; }
//무적 설정 public void SetInvInvincibility() { nowStatus |= GlobalCharacterInfo.CHAR_STATUS.INVINCIBILITY; }
bool IsStatus(GlobalCharacterInfo.CHAR_STATUS argStat) { return((nowStatus & argStat) > 0); }