// 상태값 교환으로 애니메이션 void NetworkManager.NetworkMessageEventListenrer.ReceiveNetworkMessage(NetworkManager.MessageEvent e) { if (e.msgType == NetworkManager.STATE_CHANGE) { if (GameManager.Instance().PLAYER.USER_NAME == m_movePlayerName) { return; } //상태값 뽑기 m_roboState = (int)e.msg.GetField(NetworkManager.STATE_CHANGE).i; // 공격 애니메이션을 gun 을 작동시키는 녀석이 재생할 필요가 없다고 가정하고 해보자 if (BitControl.Get(m_roboState, (int)ROBO_STATE.ATTACK) || BitControl.Get(m_roboState, (int)ROBO_STATE.COOLTIME)) { if (m_gunPlayerName == GameManager.Instance().PLAYER.USER_NAME) { m_roboState = BitControl.Clear(m_roboState, (int)ROBO_STATE.ATTACK); m_roboState = BitControl.Clear(m_roboState, (int)ROBO_STATE.COOLTIME); } } } else if (e.msgType == NetworkManager.GUN_ANGLE_CHANGE) { // 앵글 또한 보간해야함 if (GameManager.Instance().PLAYER.USER_NAME == m_gunPlayerName) { return; } m_targetAngle = e.msg.GetField(NetworkManager.GUN_ANGLE_CHANGE).f; m_syncTime_angle = 0.0f; m_delay_angle = Time.time - m_lastSyncTimeAngle; m_lastSyncTimeAngle = Time.time; } else if (e.msgType == NetworkManager.HP_UPDATE) { if (GameManager.Instance().PLAYER.USER_NAME.Equals(e.user) || !e.targetName.EndsWith("robo")) { return; } m_hp = (int)e.msg.GetField(NetworkManager.HP_UPDATE).i; } else if (e.msgType == NetworkManager.ENERGY_UPDATE) { if (GameManager.Instance().PLAYER.USER_NAME.Equals(e.user) || !e.targetName.EndsWith("robo")) { return; } m_roboEnergy = e.msg.GetField(NetworkManager.ENERGY_UPDATE).f; } else if (e.msgType.Equals(NetworkManager.ROBOT_PLACE)) { if (!string.IsNullOrEmpty(m_movePlayerName) && m_movePlayerName.Equals(e.user) || (!string.IsNullOrEmpty(m_gunPlayerName) && m_gunPlayerName.Equals(e.user))) { return; } m_controllName = e.targetName; } }
// :: 행성 나가기 void ObjectRoboOutDoorControlCheck() { if (BitControl.Get(m_curState, (int)HERO_STATE.CONTROL_OUT_DOOR)) { string func = ""; switch (GameManager.Instance().SCENE_PLACE) { case GameManager.PLACE.ROBO_IN: case GameManager.PLACE.ROBO_IN_DRIVE: case GameManager.PLACE.ROBO_IN_GUN: func = "RobotOutEnd"; GameManager.PLACE place = GameManager.PLACE.PLANET1; switch (GameManager.Instance().ROBO.ROBO_PLACE_NAME) { case "PLANET1": place = GameManager.PLACE.PLANET1; break; case "PLANET2": place = GameManager.PLACE.PLANET2; break; } GameManager.Instance().ChangeScene(place, gameObject, func); break; case GameManager.PLACE.PLANET: case GameManager.PLACE.PLANET1: case GameManager.PLACE.PLANET2: m_rigidBody.velocity = new Vector2(0.0f, 0.0f); func = "RobotInEnd"; GameManager.Instance().ChangeScene(GameManager.PLACE.ROBO_IN_DRIVE, gameObject, func); break; } } }
// :: 행성 나가기 void ObjectRoboOutDoorControlCheck() { if (BitControl.Get(m_curState, (int)Hero.HERO_STATE.CONTROL_OUT_DOOR)) { GameObject target = null; int cameraSize = 6; // CameraManager.CAMERA_PLACE place = CameraManager.CAMERA_PLACE.ROBO_IN; string func = ""; //switch (CameraManager.Instance().PLACE) //{ // case CameraManager.CAMERA_PLACE.ROBO_IN: // target = CameraManager.Instance().m_inTheStar; // place = CameraManager.CAMERA_PLACE.STAR; // func = "RobotOutEnd"; // break; // case CameraManager.CAMERA_PLACE.STAR: // target = CameraManager.Instance().m_robotPlace; // cameraSize = 4; // place = CameraManager.CAMERA_PLACE.ROBO_IN; // this.GetComponent<Rigidbody2D>().gravityScale = 0.0f; // func = "RobotInEnd"; // break; //} //CameraManager.Instance().MoveCameraAndObject(target , cameraSize , place , gameObject , gameObject , func , false); } }
// :: 총 조종 void ObjectRoboGunControlCheck() { if (BitControl.Get(m_curState, (int)Hero.HERO_STATE.CONTROL_GUN)) { if (m_tutoRobo.GetComponent <TutoRobo>().CUR_STATE == 0) { if (m_tutoEnemy != null) { m_tutoEnemy.SetActive(true); } m_tutoRobo.GetComponent <TutoRobo>().CUR_STATE = 2; GameManager.Instance().ChangeScene(GameManager.PLACE.TUTORIAL_ROBO); //CameraManager.Instance().MoveCamera( // m_tutoRobo , // GameSetting.CAMERA_SPACE , // CameraManager.CAMERA_PLACE.TUTORIAL_ROBO_SPACE); // m_tuto.TutorialAction_ObjectInteraction("gun_controller"); } else { m_tutoRobo.GetComponent <TutoRobo>().CUR_STATE = 0; GameManager.Instance().ChangeScene(GameManager.PLACE.TUTORIAL_ROBO_IN); //CameraManager.Instance().MoveCamera(gameObject , GameSetting.CAMERA_ROBO , CameraManager.CAMERA_PLACE.TUTORIAL_ROBO_IN); } } }
// 공격하기 void AttackControl() { if (Input.GetKeyUp(KeyCode.Space) && !BitControl.Get(m_curState, (int)Hero.HERO_STATE.CONTROL_ENERGY_CHARGE)) { m_curState = BitControl.Set(m_curState, (int)Hero.HERO_STATE.ATTACK); } }
//단순 애니메이션 작업 void NetworkAnimation() { if (m_roboState == (int)ROBO_STATE.IDLE) //BitControl.Get(m_roboState, (int)ROBO_STATE.IDLE)) { CheckAndSetAnimation(ANI_IDLE, true); // m_skletonAnimation.state.SetAnimation(0, ANI_IDLE, true); m_engineAnimator.SetInteger("play", 0); } else { if (BitControl.Get(m_roboState, (int)ROBO_STATE.MOVE)) { if (IsCurrentAnimation(ANI_IDLE)) { m_skletonAnimation.state.SetAnimation(0, ANI_MOVE, true); } m_engineAnimator.SetInteger("play", 1); } } if (BitControl.Get(m_roboState, (int)ROBO_STATE.ATTACK)) { m_skletonAnimation.state.SetAnimation(0, ANI_ATTACK, false); m_roboState = BitControl.Clear(m_roboState, (int)ROBO_STATE.ATTACK); m_roboState = BitControl.Set(m_roboState, (int)ROBO_STATE.COOLTIME); } }
// :: 인벤 void ObjectRoboInvenControlCheck() { if (BitControl.Get(m_curState, (int)Hero.HERO_STATE.CONTROL_INVEN)) { m_userControlName = null; m_curState = BitControl.Clear(m_curState, (int)Hero.HERO_STATE.CONTROL_INVEN); } }
// 어택 종료시 초기화 void AttackEndCheckEvent(Spine.TrackEntry trackEntry) { if (BitControl.Get(m_roboState, (int)HeroRobo.ROBO_STATE.COOLTIME)) //trackEntry.animation.name == ANI_ATTACK) { m_roboState = BitControl.Clear(m_roboState, (int)HeroRobo.ROBO_STATE.COOLTIME); //m_effectAnimator.gameObject.SetActive(true); //m_effectAnimator.Play("Robo_attackEffect"); } }
// :::::::::::::::::::::::::::: // :: 힐링 존 void ObjectRoboHealControlCheck() { // 기능 구현해야함 if (BitControl.Get(m_curState, (int)HERO_STATE.CONTROL_HEAL)) { m_userControlName = null; m_curState = BitControl.Clear(m_curState, (int)HERO_STATE.CONTROL_HEAL); HP = GameSetting.HERO_MAX_HP; } }
// :::::::::::::::::::::::::::: // :: 힐링 존 void ObjectRoboHealControlCheck() { // 기능 구현해야함 if (BitControl.Get(m_curState, (int)Hero.HERO_STATE.CONTROL_HEAL)) { m_userControlName = null; m_curState = BitControl.Clear(m_curState, (int)Hero.HERO_STATE.CONTROL_HEAL); m_tuto.TutorialAction_Heal(100, 100); } }
void ControlGun() { m_prevAngle = m_gunAngle; if (!m_skletonAnimation.skeleton.flipX) { m_armBone.transform.rotation = Quaternion.Euler(0, 0, m_gunAngle); } else { m_armBone.transform.rotation = Quaternion.Euler(0, 0, -m_gunAngle); } if (Input.GetKey(KeyCode.UpArrow)) { if (m_gunAngle - 1.0f > -360.0f) { m_gunAngle -= 1.0f; } } if (Input.GetKey(KeyCode.DownArrow)) { if (m_gunAngle + 1.0f < 360.0f) { m_gunAngle += 1.0f; } } if (ENERGY >= 2.0f && !BitControl.Get(m_roboState, (int)ROBO_STATE.COOLTIME) && Input.GetKeyUp(KeyCode.Space)) { SoundManager.Instance().PlaySound(m_laser1); m_roboState = BitControl.Set(m_roboState, (int)ROBO_STATE.ATTACK); } if (BitControl.Get(m_roboState, (int)ROBO_STATE.ATTACK) && !BitControl.Get(m_roboState, (int)ROBO_STATE.COOLTIME)) { m_skletonAnimation.state.SetAnimation(0, ANI_ATTACK, false); StateSend(); m_roboState = BitControl.Clear(m_roboState, (int)ROBO_STATE.ATTACK); m_roboState = BitControl.Set(m_roboState, (int)ROBO_STATE.COOLTIME); if (ENERGY >= 2.0f) { //if (!IsInvoking("EnergyTestUser")) // Invoke("EnergyTestUser" , 0.5f); if (m_gunPlayerName.Equals(GameManager.Instance().PLAYER.USER_NAME)) { ENERGY -= 2.0f; FireBullet(); } } } }
void InteractionEffect() { if (BitControl.Get(m_curState, (int)HERO_STATE.CONTROL_GUN)) { PopupManager.Instance().AddInteractionPopup("WEAPON SYSTEM ONLINE"); } else { PopupManager.Instance().AddInteractionPopup("DRIVE SYSTEM ONLINE"); } }
float VerticalMoveControl() { float moveY = 0.0f; float jump = 0.0f; if (Input.GetKey(KeyCode.W)) { if (m_LadderState) { m_curState = BitControl.Set(m_curState, (int)Hero.HERO_STATE.MOVE); m_curState = BitControl.Set(m_curState, (int)Hero.HERO_STATE.LADDER); moveY = m_moveSpeed * Time.deltaTime; m_rigidBody.gravityScale = 0.0f; m_rigidBody.velocity = Vector2.zero; m_curState = BitControl.Clear(m_curState, (int)Hero.HERO_STATE.JUMP); m_curState = BitControl.Clear(m_curState, (int)Hero.HERO_STATE.JUMP_FALL); } else if (!BitControl.Get(m_curState, (int)Hero.HERO_STATE.JUMP) && !BitControl.Get(m_curState, (int)Hero.HERO_STATE.JUMP_FALL)) { // 특정 오브젝트 밟자마자 (점프 안끝났는데) 점프하는 경우 방지 if (m_rigidBody.velocity.y <= 0.0f) { m_curState = BitControl.Set(m_curState, (int)Hero.HERO_STATE.JUMP); jump = m_jumpPower; } } } if (Input.GetKey(KeyCode.S)) { if (m_LadderState) { m_curState = BitControl.Set(m_curState, (int)Hero.HERO_STATE.MOVE); m_curState = BitControl.Set(m_curState, (int)Hero.HERO_STATE.LADDER); moveY = -m_moveSpeed * Time.deltaTime; m_rigidBody.gravityScale = 0.0f; m_rigidBody.velocity = Vector2.zero; m_curState = BitControl.Clear(m_curState, (int)Hero.HERO_STATE.JUMP); m_curState = BitControl.Clear(m_curState, (int)Hero.HERO_STATE.JUMP_FALL); } else { //딱히 하는거 없음 } } return((BitControl.Get(m_curState, (int)Hero.HERO_STATE.JUMP)) ? jump : moveY); }
// 공격하기 void AttackControl() { if (Input.GetKeyUp(KeyCode.Space) && !BitControl.Get(m_curState, (int)HERO_STATE.CONTROL_ENERGY_CHARGE)) { m_curState = BitControl.Clear(m_curState, (int)HERO_STATE.ATTACK); if (m_skletonAnimation.state.GetCurrent(1) != null) { m_skletonAnimation.state.ClearTrack(1); } m_curState = BitControl.Set(m_curState, (int)HERO_STATE.ATTACK); } }
//-----------------------------------------------------------------------------------------------------------------------// //-- 오브젝트 조작 -----------------------------------------------------------------------------------------------------// // :: 로봇 조종 void ObjectRoboDriveControlCheck() { if (BitControl.Get(m_curState, (int)HERO_STATE.CONTROL_DRIVE)) { if (string.IsNullOrEmpty(GameManager.Instance().ROBO.MOVE_PLYAER)) { NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonOrderRobotSetting()); } else { //탈출 NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonOrderRobotSetting(false)); } } }
void OnTriggerStay2D(Collider2D col) { if (!m_isMe) { return; } if (!col.transform.tag.Equals("LADDER") && !string.IsNullOrEmpty(col.transform.tag)) { m_userControlName = col.transform.tag; } if (col.transform.tag == "LADDER" && (BitControl.Get(m_curState, (int)HERO_STATE.JUMP) || BitControl.Get(m_curState, (int)HERO_STATE.JUMP_FALL))) { } }
// :: 에너지 충전 void ObjectRoboEnergyControlCheck() { if (BitControl.Get(m_curState, (int)Hero.HERO_STATE.CONTROL_ENERGY_CHARGE)) { if (Input.GetKeyDown(KeyCode.Space)) { if (iTween.Count(m_chargePad.gameObject) <= 0) { iTween.MoveTo(m_chargePad.gameObject, iTween.Hash("y", m_chargeTopObj.transform.position.y, "oncompletetarget", gameObject, "oncomplete", "PadTweenEnd", "speed", 4.0f)); GameManager.Instance().ROBO.ENERGY = GameManager.Instance().ROBO.ENERGY + 0.5f; } else { } } } }
void ControlGun() { m_prevAngle = m_gunAngle; if (!m_skletonAnimation.skeleton.flipX) { m_armBone.transform.rotation = Quaternion.Euler(0, 0, m_gunAngle); } else { m_armBone.transform.rotation = Quaternion.Euler(0, 0, -m_gunAngle); } if (Input.GetKey(KeyCode.UpArrow)) { if (m_gunAngle - 1.0f > -360.0f) { m_gunAngle -= 1.0f; } } if (Input.GetKey(KeyCode.DownArrow)) { if (m_gunAngle + 1.0f < 360.0f) { m_gunAngle += 1.0f; } } if (Input.GetKeyUp(KeyCode.Space) && !BitControl.Get(m_roboState, (int)HeroRobo.ROBO_STATE.COOLTIME)) { SoundManager.Instance().PlaySound(m_laser1); m_roboState = BitControl.Set(m_roboState, (int)HeroRobo.ROBO_STATE.ATTACK); } if (BitControl.Get(m_roboState, (int)HeroRobo.ROBO_STATE.ATTACK)) { m_skletonAnimation.state.SetAnimation(0, ANI_ATTACK, false); m_roboState = BitControl.Clear(m_roboState, (int)HeroRobo.ROBO_STATE.ATTACK); m_roboState = BitControl.Set(m_roboState, (int)HeroRobo.ROBO_STATE.COOLTIME); FireBullet(); } }
// :: 에너지 충전 void ObjectRoboEnergyControlCheck() { if (BitControl.Get(m_curState, (int)HERO_STATE.CONTROL_ENERGY_CHARGE)) { if (Input.GetKeyDown(KeyCode.Space)) { if (GameManager.Instance().ROBO.ENERGY < 100.0f && iTween.Count(m_chargePad.gameObject) <= 0) { iTween.MoveTo(m_chargePad.gameObject, iTween.Hash("y", m_chargeTopObj.transform.position.y, "oncompletetarget", gameObject, "oncomplete", "PadTweenEnd", "speed", 4.0f, "onupdatetarget", gameObject, "onupdate", "ChargeMoveSend")); GameManager.Instance().ROBO.ENERGY += 1.0f; NetworkManager.Instance().SendOrderMessage( JSONMessageTool.ToJsonEnergyUdate("robo", GameManager.Instance().ROBO.ENERGY)); } else { } } } }
// :: 로봇 조종 void ObjectRoboDriveControlCheck() { if (BitControl.Get(m_curState, (int)Hero.HERO_STATE.CONTROL_DRIVE)) { if (m_tutoRobo.GetComponent <TutoRobo>().CUR_STATE == 0) { m_tutoRobo.GetComponent <TutoRobo>().CUR_STATE = 1; GameManager.Instance().ChangeScene(GameManager.PLACE.TUTORIAL_ROBO); //CameraManager.Instance().MoveCamera( // m_tutoRobo , // GameSetting.CAMERA_SPACE , // CameraManager.CAMERA_PLACE.TUTORIAL_ROBO_SPACE); m_tuto.TutorialAction_ObjectInteraction("drive_controller"); m_tutoMoveCk = true; } else { m_tutoRobo.GetComponent <TutoRobo>().CUR_STATE = 0; GameManager.Instance().ChangeScene(GameManager.PLACE.TUTORIAL_ROBO_IN); //CameraManager.Instance().MoveCamera(gameObject , GameSetting.CAMERA_ROBO , // CameraManager.CAMERA_PLACE.TUTORIAL_ROBO_IN); } } }
void Control() { Vector2 pos = transform.position; //상황 설정 // 좌 - 우 이동 상 점프 & 사다리 하 사다리 float moveX = 0.0f; float moveY = 0.0f; float jump = 0.0f; // 특정 컨트롤을 다루고 있는 상태가 아닐 경우 // if(GetMoveAbleCheck()) // 이동에 관련된 처리를 하는 녀석들 float // 가로이동 moveX = HorizontalMoveControl(); // 점프 및 수직 이동 if (BitControl.Get(m_curState, (int)Hero.HERO_STATE.LADDER)) { moveY = VerticalMoveControl(); } else { jump = VerticalMoveControl(); } // 공격 혹은 수리 AttackControl(); // 충전 ObjectRoboEnergyControlCheck(); ObjectControl(); // 이동 애니메이션 체크 if ((BitControl.Get(m_curState, (int)Hero.HERO_STATE.MOVE) && (Input.GetKeyUp(KeyCode.A) || Input.GetKeyUp(KeyCode.D) || Input.GetKeyUp(KeyCode.W) || Input.GetKeyUp(KeyCode.S)))) { m_curState = BitControl.Clear(m_curState, (int)Hero.HERO_STATE.MOVE); if (!BitControl.Get(m_curState, (int)Hero.HERO_STATE.LADDER)) { CheckAndSetAnimation(ANI_IDLE, true); m_curState = (int)Hero.HERO_STATE.IDLE; } else { m_climb.state.ClearTrack(0); } } // 떨어지는 상태임 if (!BitControl.Get(m_curState, (int)Hero.HERO_STATE.LADDER)) { if (m_rigidBody.velocity.y < 0.0f) { m_curState = BitControl.Clear(m_curState, (int)Hero.HERO_STATE.JUMP); m_curState = BitControl.Set(m_curState, (int)Hero.HERO_STATE.JUMP_FALL); } if (m_rigidBody.velocity.y >= 0.0f) { m_curState = BitControl.Clear(m_curState, (int)Hero.HERO_STATE.JUMP_FALL); if (!BitControl.Get(m_curState, (int)Hero.HERO_STATE.MOVE)) { CheckAndSetAnimation(ANI_IDLE, true); } } } // -- 상태값에 따라 애니메이션 처리 및 이동 점프 처리 ---------------------------------------- if (m_curState == (int)Hero.HERO_STATE.IDLE) { CheckAndSetAnimation(ANI_IDLE, true); } else { if (BitControl.Get(m_curState, (int)Hero.HERO_STATE.JUMP)) { // 점프 ㄱㄱ this.m_rigidBody.AddForce(new Vector2(0, jump)); // IDLE / MOVE 상태일 때만 점프 애니메이션 if (IsCurrentAnimation(ANI_IDLE))// || IsCurrentAnimation(ANI_MOVE)) { //레디 -> 점핑 ㄱㄱ m_skletonAnimation.state.SetAnimation(0, ANI_JUMP_READY, false); m_skletonAnimation.state.AddAnimation(0, ANI_JUMP_JUMPING, true, 0f); } } if (BitControl.Get(m_curState, (int)Hero.HERO_STATE.JUMP_FALL)) { //떨어지는 중 if (!BitControl.Get(m_curState, (int)Hero.HERO_STATE.MOVE)) { CheckAndSetAnimation(ANI_JUMP_FALL, false); } } if (BitControl.Get(m_curState, (int)Hero.HERO_STATE.MOVE)) { if (!IsCurrentAnimation(ANI_MOVE)) { m_skletonAnimation.state.SetAnimation(0, ANI_MOVE, true); // } this.transform.Translate(new Vector3(moveX, moveY)); } if (BitControl.Get(m_curState, (int)Hero.HERO_STATE.LADDER)) { m_skletonAnimation.enabled = false; this.GetComponent <MeshRenderer>().enabled = false; m_climb.gameObject.SetActive(true); if (BitControl.Get(m_curState, (int)Hero.HERO_STATE.MOVE)) { if (m_climb.state.GetCurrent(0) != null && !m_climb.state.GetCurrent(0).animation.name.Equals("animation")) { m_climb.state.SetAnimation(0, "animation", true); } else if (m_climb.state.GetCurrent(0) == null) { m_climb.state.SetAnimation(0, "animation", true); } MDebug.Log("여기"); } } //test if (BitControl.Get(m_curState, (int)Hero.HERO_STATE.ATTACK)) { m_skletonAnimation.state.SetAnimation(1, ANI_REPAIR, false); } } Debug.DrawLine(pos, new Vector3(pos.x, pos.y - GetComponent <BoxCollider2D>().bounds.size.y, 0.0f), Color.red); }
void ControlInSpace() { Vector2 pos = transform.position; //상황 설정 // 좌 - 우 이동 상 점프 & 사다리 하 사다리 float moveX = 0.0f; float moveY = 0.0f; if (Input.GetKey(KeyCode.A)) { m_curState = BitControl.Set(m_curState, (int)HERO_STATE.MOVE); moveX = -m_moveSpeed * Time.deltaTime; this.m_skletonAnimation.skeleton.flipX = false; //this.GetComponent<SpriteRenderer>().flipX = false; } if (Input.GetKey(KeyCode.D)) { m_curState = BitControl.Set(m_curState, (int)HERO_STATE.MOVE); moveX = m_moveSpeed * Time.deltaTime; this.m_skletonAnimation.skeleton.flipX = true; //this.GetComponent<SpriteRenderer>().flipX = true; } if (Input.GetKey(KeyCode.W)) { m_curState = BitControl.Set(m_curState, (int)HERO_STATE.MOVE); moveY = m_moveSpeed * Time.deltaTime; } else if (Input.GetKey(KeyCode.S)) { m_curState = BitControl.Set(m_curState, (int)HERO_STATE.MOVE); moveY = -m_moveSpeed * Time.deltaTime; } if (Input.GetKey(KeyCode.S)) { // 요부분에서 사다리를 체크함 if (BitControl.Get(m_curState, (int)HERO_STATE.MOVE)) { moveY = -m_moveSpeed * Time.deltaTime; } else { //딱히 하는거 없음 } } // 상호작용 키 if (Input.GetKey(KeyCode.R)) { //this.m_animator.SetBool("Move", false); } // 이동 애니메이션 체크 if (BitControl.Get(m_curState, (int)HERO_STATE.MOVE) && (Input.GetKeyUp(KeyCode.A) || Input.GetKeyUp(KeyCode.D) || (Input.GetKeyUp(KeyCode.W) || Input.GetKeyUp(KeyCode.S)))) { m_curState = BitControl.Clear(m_curState, (int)HERO_STATE.MOVE); } // 최종 if (m_curState == (int)HERO_STATE.IDLE) { CheckAndSetAnimation(ANI_IDLE, true); } else { if (BitControl.Get(m_curState, (int)HERO_STATE.MOVE)) { if (IsCurrentAnimation(ANI_IDLE)) { m_skletonAnimation.state.SetAnimation(0, ANI_MOVE, true); } this.transform.Translate(new Vector3(moveX, moveY)); } } // MoveSend(); }
// -- Network Message 에 따른 애니메이션 처리 ---------------------------------------------------------------------------// void NetworkAnimation() { if (m_curState == (int)HERO_STATE.IDLE) { CheckAndSetAnimation(ANI_IDLE, true); } else { if (BitControl.Get(m_curState, (int)HERO_STATE.JUMP)) { // 점프 ㄱㄱ // IDLE / MOVE 상태일 때만 점프 애니메이션 if (IsCurrentAnimation(ANI_IDLE))// || IsCurrentAnimation(ANI_MOVE)) { //레디 -> 점핑 ㄱㄱ m_skletonAnimation.state.SetAnimation(0, ANI_JUMP_READY, false); m_skletonAnimation.state.AddAnimation(0, ANI_JUMP_JUMPING, true, 0f); } } if (BitControl.Get(m_curState, (int)HERO_STATE.JUMP_FALL)) { //떨어지는 중 if (!BitControl.Get(m_curState, (int)HERO_STATE.MOVE)) { CheckAndSetAnimation(ANI_JUMP_FALL, false); } } if (BitControl.Get(m_curState, (int)HERO_STATE.MOVE)) { if (!IsCurrentAnimation(ANI_MOVE)) { m_skletonAnimation.state.SetAnimation(0, ANI_MOVE, true); // } } if (BitControl.Get(m_curState, (int)HERO_STATE.LADDER)) { m_skletonAnimation.enabled = false; this.GetComponent <MeshRenderer>().enabled = false; m_climb.gameObject.SetActive(true); ShowWeapon(false); if (BitControl.Get(m_curState, (int)HERO_STATE.MOVE)) { if (m_climb.state.GetCurrent(0) != null && !m_climb.state.GetCurrent(0).animation.name.Equals("animation")) { m_climb.state.SetAnimation(0, "animation", true); } else if (m_climb.state.GetCurrent(0) == null) { m_climb.state.SetAnimation(0, "animation", true); } MDebug.Log("LADDER move"); } MDebug.Log("LADDER"); } else { ShowWeapon(true); m_skletonAnimation.enabled = true; this.GetComponent <MeshRenderer>().enabled = true; m_climb.gameObject.SetActive(false); //if(m_climb.state != null && m_climb.state.GetCurrent(0) != null) // m_climb.state.ClearTrack(0); } if (BitControl.Get(m_curState, (int)HERO_STATE.ATTACK)) { m_skletonAnimation.state.SetAnimation(1, ANI_REPAIR, false); } } }
/// <summary> /// 캐릭터 조작에 관련된 함수 /// </summary> void Control() { // 가져다 쓰기 편하기 위해 선언 Vector3 pos = transform.position; // 요생키들이 실제 이동 float movex = 0; float movey = 0; if (Input.GetKey(KeyCode.LeftArrow) || Input.GetKey(KeyCode.RightArrow) || Input.GetKey(KeyCode.UpArrow) || Input.GetKey(KeyCode.DownArrow)) { m_engineAnimator.SetInteger("play", 1); m_roboState = BitControl.Set(m_roboState, (int)ROBO_STATE.MOVE); m_energyUserTick = 0.0f; } // Horizontal if (Input.GetKey(KeyCode.LeftArrow) && ENERGY >= 2) { if (!IsInvoking("EnergyTestUser")) { Invoke("EnergyTestUser", 0.5f); } movex = -m_moveSpeed * Time.deltaTime; m_skletonAnimation.skeleton.flipX = false; } if (Input.GetKey(KeyCode.RightArrow) && ENERGY >= 2) { if (!IsInvoking("EnergyTestUser")) { Invoke("EnergyTestUser", 0.5f); } movex = m_moveSpeed * Time.deltaTime; m_skletonAnimation.skeleton.flipX = true; } // Vertical if (Input.GetKey(KeyCode.UpArrow) && ENERGY >= 2) { if (!IsInvoking("EnergyTestUser")) { Invoke("EnergyTestUser", 0.5f); } movey = m_moveSpeed * Time.deltaTime; } if (Input.GetKey(KeyCode.DownArrow) && ENERGY >= 2) { if (!IsInvoking("EnergyTestUser")) { Invoke("EnergyTestUser", 0.5f); } movey = -m_moveSpeed * Time.deltaTime; } if (BitControl.Get(m_roboState, (int)ROBO_STATE.MOVE) && (Input.GetKeyUp(KeyCode.LeftArrow) || Input.GetKeyUp(KeyCode.RightArrow) || Input.GetKeyUp(KeyCode.UpArrow) || Input.GetKeyUp(KeyCode.DownArrow))) { // CheckAndSetAnimation(ANI_IDLE, true); m_skletonAnimation.state.SetAnimation(0, ANI_IDLE, true); m_roboState = BitControl.Clear(m_roboState, (int)ROBO_STATE.MOVE); m_engineAnimator.SetInteger("play", 0); //m_roboState = BitControl.Set(m_roboState, (int)ROBO_STATE.IDLE); } if (m_roboState == (int)ROBO_STATE.IDLE) //BitControl.Get(m_roboState, (int)ROBO_STATE.IDLE)) { CheckAndSetAnimation(ANI_IDLE, true); m_engineAnimator.SetInteger("play", 0); // m_skletonAnimation.state.SetAnimation(0, ANI_IDLE, true); } else { if (BitControl.Get(m_roboState, (int)ROBO_STATE.MOVE)) { transform.Translate(movex, movey, 0); if (IsCurrentAnimation(ANI_IDLE)) { m_skletonAnimation.state.SetAnimation(0, ANI_MOVE, true); } } } }