public void Damage(int damage, string boneName) { base.Damage(damage); SpriteRenderer target = null; if (boneName.Equals("head")) { } else if (boneName.Equals("Tail")) { } else { string num = Regex.Replace(boneName, @"\D", ""); MDebug.Log(boneName); int index = int.Parse(num); target = m_destroyBoneList[index - 1].m_renderer; m_destroyBoneList[index - 1].m_hp -= 1; if (m_destroyBoneList[index - 1].m_hp <= 0) { m_destroyBoneList[index - 1].m_renderer.enabled = true; NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonPartDestroy(index - 1)); } } NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonHPUdate(m_name, m_hp)); }
private void State_Complete(Spine.TrackEntry trackEntry) { if (trackEntry.animation.name == "transform") { m_rotate = m_me.GetComponent <Stage1BOSS>().m_patternDRotate; m_rotate.transform.position = m_me.transform.position; m_rotate.gameObject.SetActive(true); m_rotate.transform.localScale = new Vector3(3, 3); // 다시 생겼을 때 if (m_moveEffect) { m_effect = false; iTween.ScaleTo(m_rotate, iTween.Hash("x", 0.0f, "y", 0.0f)); m_skletonAnimation.state.SetAnimation(2, "move_fast_close", true); NetworkManager.Instance().SendOrderMessage( JSONMessageTool.ToJsonAIMessage(m_aiTarget, "D", "move_fast_close", true)); } else { m_effect = true; NetworkManager.Instance().SendOrderMessage( JSONMessageTool.ToJsonAIMessage(m_aiTarget, "D", "attack_D_in", false)); m_skletonAnimation.state.SetAnimation(2, "attack_D_in", false); } } if (trackEntry.animation.name == "attack_D_in") { } }
void NetworkManager.NetworkMessageEventListenrer.ReceiveNetworkMessage(NetworkManager.MessageEvent e) { if (e.msgType.Equals(NetworkManager.HP_UPDATE)) { // 데미지 입은것이 들어옴 if (e.targetName.Equals(m_name) && !GameManager.Instance().PLAYER.USER_NAME.Equals(e.user)) { if (m_damageCoolTime) { return; } m_damageCoolTime = true; GameManager.Instance().SetCurrentEnemy(this); base.Damage((int)e.msg.GetField(NetworkManager.HP_UPDATE).i); if (m_hp <= 0) { MapManager.Instance().AddObject(GamePath.EFFECT, transform.position); NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonRemoveOrder(m_name, "Monster")); NetworkManager.Instance().RemoveNetworkOrderMessageEventListener(this); GameObject.Destroy(gameObject); return; } m_damageCoolTime = true; if (!IsInvoking("DamageEffect")) { InvokeRepeating("DamageEffect", 0.1f, 0.1f); } } } }
// 몬스터 HP Update public void MonsterHPUpdate(int curHP, int maxHP) { if (maxHP == 0) { return; } MDebug.Log("h " + curHP + " max " + maxHP); float percent = ((float)curHP / (float)maxHP); float width = m_topEnemyHPBar.sprite.rect.size.x; RectTransform t = m_topEnemyHPBar.GetComponent <RectTransform>(); t.sizeDelta = new Vector2(width * percent, t.sizeDelta.y); float arrowWidth = m_enemyHPLeftArrow.sprite.rect.size.x * 0.5f; Vector3 left = new Vector3( m_topEnemyHPBar.transform.position.x - (t.sizeDelta.x / 2.0f) - arrowWidth, m_enemyHPLeftArrow.transform.position.y); Vector3 right = new Vector3( m_topEnemyHPBar.transform.position.x + (t.sizeDelta.x / 2.0f) + arrowWidth, m_enemyHPLeftArrow.transform.position.y); m_enemyHPLeftArrow.transform.position = left; m_enemyHPRightArrow.transform.position = right; NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonHPUdate("targetMon", percent)); }
void NetworkManager.NetworkMessageEventListenrer.ReceiveNetworkMessage(NetworkManager.MessageEvent e) { if (e.msgType.Equals(NetworkManager.HP_UPDATE)) { // 데미지 입은것이 들어옴 if (e.targetName.Equals(m_name) && !GameManager.Instance().PLAYER.USER_NAME.Equals(e.user)) { GameManager.Instance().SetCurrentEnemy(this); base.Damage((int)e.msg.GetField(NetworkManager.HP_UPDATE).i); if (m_hp <= 0) { MapManager.Instance().AddObject(GamePath.EFFECT, transform.position); if (!m_tutorial) { NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonRemoveOrder(m_name, "Monster")); NetworkManager.Instance().RemoveNetworkOrderMessageEventListener(this); } else { m_tutoRobo.TutoKillMonster(); } GameObject.Destroy(gameObject); } } } }
protected override void Move() { if (m_damageCoolTime) { return; } CheckAndSetAnimation(0, ANI_MOVE, true); bool flip = m_skeletonAnimation.skeleton.flipX; float dir = (flip) ? 1.0f : -1.0f; if (m_target == null) { m_curState = "move"; } transform.Translate( new Vector3(GameSetting.HERO_MOVE_SPEED * Time.deltaTime * dir, 0.0f)); if (m_curState != m_prevState) { NetworkManager.Instance().SendOrderMessage( JSONMessageTool.ToJsonAIMessage(m_name, "", ANI_MOVE, true)); } MoveSend(); }
void OnCollisionStay2D(Collision2D col) { if (m_target == null) { return; } m_attackTick += Time.deltaTime; // MDebug.Log("Tick " + string.Format("{0:F1}" , tick)); if (m_attackTick <= 0.5f) { return; } m_attackTick = 0.0f; Hero hero = m_target.GetComponent <Hero>(); if (hero != null) { if (hero.IS_PLAYER) { hero.Damage(1, m_skeletonAnimation.skeleton.flipX, 500.0f); } else { NetworkManager.Instance().SendOrderMessage( JSONMessageTool.ToJsonCharacterHPUpdate(hero.USERNAME, 10, GameSetting.HERO_MAX_HP)); } } CheckAndSetAnimation(0, ANI_MOVE, true); }
public override void Damage(int damage) { base.Damage(damage); if (!m_tutorial) { NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonHPUdate(m_name, m_hp)); } if (m_hp <= 0) { MapManager.Instance().AddObject(GamePath.EFFECT, transform.position); if (!m_tutorial) { NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonRemoveOrder(m_name, "Monster")); NetworkManager.Instance().RemoveNetworkOrderMessageEventListener(this); } else { m_tutoRobo.TutoKillMonster(); } GameObject.Destroy(gameObject); } }
//Start public void StartButton() { // if(m_startButton.sprite == m_sprStart_setting) { NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonOrderGameSatart()); } }
public void ShootEgg(int[] index, bool randDir = false) { for (int i = 0; i < index.Length; i++) { Bullet b = BulletManager.Instance().AddBullet(BulletManager.BULLET_TYPE.EGG_BULLET); GameObject bone = m_boneList[index[i]]; Vector3 dir = m_target.transform.position - bone.transform.position; dir.Normalize(); if (randDir) { float t = (UnityEngine.Random.Range(0, 2) == 1) ? 1.0f : -1.0f; dir *= t; dir = new Vector3(dir.x + UnityEngine.Random.Range(-0.3f, 0.3f), dir.y + UnityEngine.Random.Range(-0.3f, 0.3f)); } string name = GameManager.Instance().PLAYER.USER_NAME + "_boss2_" + Monster.m_index++; b.SetupBullet(name, false, dir); b.BULLET_SPEED = 20.0f + UnityEngine.Random.Range(-10.0f, 10.0f); Vector3 pos = bone.transform.position; b.transform.position = pos; NetworkManager.Instance().SendOrderMessage( JSONMessageTool.ToJsonCreateOrder( name, "boss1_bullet", pos.x, pos.y, b.transform.rotation.eulerAngles.y, false)); } }
public override float Attack() { m_curState = "attack"; if (m_heroTarget == null) { return(1.0f); } Vector3 pos = transform.position; Vector3 hero = m_heroTarget.transform.position; if (pos.x <= hero.x) { m_skeletonAnimation.skeleton.flipX = true; } else { m_skeletonAnimation.skeleton.flipX = false; } if (Mathf.Abs(Vector3.Distance(pos, hero)) <= 51.0f) { CheckAndSetAnimation(0, ANI_ATTACK, false); if (!m_curState.Equals(m_prevState)) { m_source.Play(); NetworkManager.Instance().SendOrderMessage( JSONMessageTool.ToJsonAIMessage(m_name, "", ANI_ATTACK, false)); } } return(1.0f); }
public override float Attack(GameObject hero, GameObject me, int index) { m_tick += Time.deltaTime; m_hero = hero; m_monster = me; // 패턴 A // 플레이어 위치를 추적하여 직선으로 날아가는 탄환 발사 // 탄환 3발 발사 // 2초마다 한번씩 if (m_tick >= GameSetting.BOSS1_PATTERN_B_ATTACK_COOLTIME) { // BulletManager.Instance().AddBullet(BulletManager.BULLET_TYPE.B_BOSS1_P1); m_skletonAnimation.state.SetAnimation(0, m_attackAni, true); NetworkManager.Instance().SendOrderMessage( JSONMessageTool.ToJsonAIMessage( m_aiTarget, "B", m_attackAni, false)); return(GameSetting.BOSS1_PATTERN_B_ATTACK_COOL); } return(0.0f); }
void Update() { //MDebug.Log("BULLET"); float angle = 0.0f; if (Input.GetKey(KeyCode.U)) { angle = -0.5f; transform.Rotate(new Vector3(0, 0, angle), Space.World); } if (Input.GetKey(KeyCode.J)) { angle = 0.5f; transform.Rotate(new Vector3(0, 0, angle), Space.World); } if (Input.GetKeyUp(KeyCode.Space)) { Bullet b = BulletManager.Instance().AddBullet(BulletManager.BULLET_TYPE.B_HERO_DEF); Vector3 pos = transform.position; //float width = (m_renderer.flipX) ? m_renderer.bounds.size.x / 2.0f : -m_renderer.bounds.size.x / 2.0f; b.transform.position = new Vector3(pos.x, pos.y, pos.z); b.transform.rotation = transform.rotation; string n = GameManager.Instance().PLAYER.USER_NAME + "_" + index; b.SetupBullet(n, false, Vector3.zero); //MDebug.Log("b " + n + " " + JSONMessageTool.ToJsonCreateOrder(n, "myTeam_bullet", pos.x, pos.y, pos.z, bullet.GetComponent<SpriteRenderer>().flipX)); NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonCreateOrder(n, "myTeam_bullet", pos.x, pos.y, pos.z, b.GetComponent <SpriteRenderer>().flipX)); index++; } }
// -- 적 생성 ----------------------------------------------------------------------------------------------- // public GameObject AddMonster(string prefabPath, string name, Vector3 pos) { GameObject monster = AddObject(prefabPath, pos); if (monster != null) { if (prefabPath.Equals(GamePath.BOSS1)) { monster.GetComponent <Stage1BOSS>().MONSTER_NAME = name; NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonCreateOrder(name, "boss1", pos.x, pos.y, pos.z)); } else if (prefabPath.Equals(GamePath.BOSS2)) { monster.GetComponent <Stage2Boss>().MONSTER_NAME = name; NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonCreateOrder(name, "boss2", pos.x, pos.y, pos.z)); } else if (prefabPath.Equals(GamePath.MONSTER1)) { monster.GetComponent <Stage1Monster>().MONSTER_NAME = name; NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonCreateOrder(name, "monster1")); } else if (prefabPath.Equals(GamePath.MONSTER2)) { monster.GetComponent <Stage1Monster>().MONSTER_NAME = name; NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonCreateOrder(name, "monster2")); } else if (prefabPath.Equals(GamePath.INSIDE_MONSTER)) { monster.GetComponent <InsidePentrationMonster>().MONSTER_NAME = name; } } return(monster); }
void CompleteAnimation(TrackEntry trackEntry) { if (trackEntry.animation.name.Equals(ANI_REPAIR)) { m_curState = BitControl.Clear(m_curState, (int)HERO_STATE.ATTACK); m_skletonAnimation.state.ClearTrack(1); if (!m_isMe) { return; } if (m_damagePointFix != null) { m_damagePointFix.GetComponent <RoboDamagePoint>().DamageFix(); } else if (m_monster != null) { if (m_monster.enabled) { m_monster.Damage(1); } else { NetworkManager.Instance().SendOrderMessage( JSONMessageTool.ToJsonHPUdate(m_monster.MONSTER_NAME, 1)); } } } }
// 접속 끊기 이벤트 void OnApplicationQuit() { NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonOrderUserLogOut( GameManager.Instance().PLAYER.NETWORK_INDEX, GameManager.Instance().PLAYER.STATUS, GameManager.Instance().PLAYER.USER_NAME, m_readyButton.sprite == m_sprReady_setting)); }
void OnApplicationQuit() { NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonOrderUserLogOut( GameManager.Instance().PLAYER.NETWORK_INDEX, GameManager.Instance().PLAYER.STATUS, GameManager.Instance().PLAYER.USER_NAME, false)); }
public override void PatternStart() { m_skletonAnimation.state.SetAnimation(2, "transform", false); NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonAIMessage(m_aiTarget, "D", "transform", false)); m_skletonAnimation.state.Complete += State_Complete; }
public void SendMessageToServer() { INPUT = false; NetworkManager.Instance().SendNetworkMessage(JSONMessageTool.ToJsonChat(m_inputField.text)); // m_messageStrs.Add(m_inputField.text); m_inputField.Select(); m_inputField.text = ""; }
void Update() { if (NetworkOrderController.ORDER_NAME != null && !NetworkOrderController.ORDER_NAME.Equals(GameManager.Instance().PLAYER.USER_NAME)) { return; } float cameraHalfWdith = (Camera.main.orthographicSize * Screen.width / Screen.height); float cameraHalfHeight = (cameraHalfWdith * Screen.height / Screen.width); Vector3 pos = m_camera.transform.position; Vector3 checkPos = Vector3.zero; //Left Map -- RightMap 일 경우 if (m_leftMap.transform.position.x <= m_rightMap.transform.position.x) { // LEFT Check checkPos = m_leftMapLeftLimit.transform.position; if (pos.x - cameraHalfWdith <= checkPos.x) { m_rightMap.transform.localPosition = new Vector3( m_leftMap.transform.localPosition.x - 50, 0, 0); NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonPlanetInfoSend( m_mapName, m_leftMap.transform.localPosition.x, m_leftMap.transform.localPosition.x - 50)); } // Right Check checkPos = m_rightMapRightLimit.transform.position; if (pos.x + cameraHalfWdith >= checkPos.x) { m_leftMap.transform.localPosition = new Vector3( m_rightMap.transform.localPosition.x + 50, 0, 0); NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonPlanetInfoSend( m_mapName, m_rightMap.transform.localPosition.x + 50, m_rightMap.transform.localPosition.x)); } } // Right Map -- Left Map 일 경우 else if (m_leftMap.transform.position.x >= m_rightMap.transform.position.x) { // LEFT Check checkPos = m_rightMapLeftLimit.transform.position; if (pos.x - cameraHalfWdith <= checkPos.x) { m_leftMap.transform.localPosition = new Vector3( m_rightMap.transform.localPosition.x - 50, 0, 0); NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonPlanetInfoSend( m_mapName, m_rightMap.transform.localPosition.x - 50, m_rightMap.transform.localPosition.x)); } // Right Check checkPos = m_leftMapRightLimit.transform.position; if (pos.x + cameraHalfWdith >= checkPos.x) { m_rightMap.transform.localPosition = new Vector3( m_leftMap.transform.localPosition.x + 50, 0, 0); NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonPlanetInfoSend( m_mapName, m_leftMap.transform.localPosition.x, m_leftMap.transform.localPosition.x + 50)); } } }
// 현재 상태값 전송 (애니메이션용) void StateSend() { if (m_prevState != m_roboState) { NetworkManager.Instance().SendOrderMessage( JSONMessageTool.ToJsonOrderStateValueChange( m_movePlayerName + "_robot", m_roboState)); } }
// 총 각도 전송 void GunAngleSend() { if (m_prevAngle != m_gunAngle) { NetworkManager.Instance().SendOrderMessage( JSONMessageTool.ToJsonOrderGunAngle( m_gunPlayerName + "_gun", m_gunAngle)); } }
void StateSend() { if (m_prevState != m_curState) { // if (!BitControl.Get(m_curState , (int)HERO_STATE.IDLE)) NetworkManager.Instance().SendOrderMessage( JSONMessageTool.ToJsonOrderStateValueChange( m_userName, m_curState)); } }
public PatternA(SkeletonAnimation ani, string moveAni, string attackAni, string aiTarget) : base(ani, moveAni, attackAni, aiTarget) { m_skletonAnimation.state.Complete += State_Complete; m_skletonAnimation.state.SetAnimation(0, m_moveAni, true); NetworkManager.Instance().SendOrderMessage( JSONMessageTool.ToJsonAIMessage( m_aiTarget, "A", m_moveAni, true)); }
public override void Damage(int damage) { base.Damage(damage); if (m_hp <= 0) { MapManager.Instance().AddObject(GamePath.EFFECT, transform.position); NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonRemoveOrder(m_name, "Monster")); GameObject.Destroy(gameObject); return; } NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonHPUdate(m_name, m_hp)); }
public override void Exit() { Stage1BOSS boss = m_me.GetComponent <Stage1BOSS>(); boss.m_laser.SetInteger("laser", 1); boss.m_laser.Play("Wait"); boss.m_laser.gameObject.SetActive(false); boss.m_laser.GetComponent <BoxCollider2D>().enabled = false; m_skletonAnimation.state.ClearTrack(2); NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonAIExitMessage(m_aiTarget, "C")); }
void Update() { if (m_hp <= 0) { MapManager.Instance().AddObject(GamePath.EFFECT, transform.position); NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonRemoveOrder(m_name, "Monster")); GameObject.Destroy(gameObject); return; } if (Input.GetKeyUp(KeyCode.I)) { GameManager.Instance().SetCurrentEnemy(this); Damage(20); } if (m_pattern != null) { m_pattern.Update(gameObject); } // 체력이 30% 이하로 떨어지면 if (m_hp <= m_fullHp * GameSetting.BOSS1_PATTERN_D_HP_CONDITION) { // 광폭화 모드가 아니라면 광폭화 모드다 !!!! if (!(m_pattern is Boss2PatternD)) { m_tail.gameObject.SetActive(false); m_pattern = new Boss2PatternD(m_skeletonAnimation, ANI_MOVE, null, m_name); } } else { if (!PatternA_AbleCheck()) { if (!PatternB_AbleCheck()) { m_attackableTick = 0.0f; m_patternATick = 0.0f; m_patternBTick = 0.0f; m_patternCTick = 0.0f; } } } // Move Move(); // 쿨타임 중이면 아~~무것도 안함 if (CoolTime()) { return; } SetCoolTime(Attack()); }
void MoveSend() { Vector3 pos = transform.position; float distance = Vector3.Distance(m_prevPos, pos); m_prevPos = transform.position; Vector3 velocity = (transform.position - m_prevPos) / Time.deltaTime; Vector3 sendPos = m_prevPos + (velocity * (Time.deltaTime - m_lastSendTime)); NetworkManager.Instance().SendEnemyMoveMessage( JSONMessageTool.ToJsonEnemyMove(m_name, sendPos.x, sendPos.y, 0, true, Vector3.zero)); }
// ---------------------------------------------------------------------// public override void PatternStart() { m_skletonAnimation.state.SetAnimation(2, "transform", false); m_skletonAnimation.state.AddAnimation(2, "attack_C_charge", false, 0.0f); m_skletonAnimation.state.AddAnimation(2, "attack_C_fire", false, 0.0f); NetworkManager.Instance().SendOrderMessage( JSONMessageTool.ToJsonAIMessage(m_aiTarget, "C", new string[] { "transform", "attack_C_charge", "attack_C_fire" })); m_skletonAnimation.gameObject.GetComponent <AudioSource>().Play(); m_skletonAnimation.state.Complete += CompleteEvent; base.PatternStart(); }
// -- 게임 제어 ------------------------------------------------------// public void GameStart() { // 로그인 / 로비 세팅 완료되었다. // 옵저버일 경우 캐릭터 생성 명령을 하지 않음 if (NetworkOrderController.OBSERVER_MODE) { //h.IS_PLAYER = false; // h.USERNAME = NetworkOrderController.ORDER_NAME; } else { // 자기 자신 생성해야함 ---------------------------------// string prefab = ""; switch (GameManager.Instance().PLAYER.SKELETON_DATA_ASSET) { case "char_01_SkeletonData": prefab = GamePath.CHARACTER1; break; case "char_02_SkeletonData": prefab = GamePath.CHARACTER2; break; case "char_03_SkeletonData": prefab = GamePath.CHARACTER3; break; } GameObject hero = MapManager.Instance().AddHero(prefab, m_playerStartPosition.transform.position); hero.transform.parent = m_playerStartPosition.transform.parent; Hero h = hero.GetComponent <Hero>(); h.USERNAME = GameManager.Instance().PLAYER.USER_NAME + "_robo"; h.m_isMe = true; h.GetComponent <BoxCollider2D>().isTrigger = false; GameManager.Instance().PLAYER.PLAYER_HERO = h; GameManager.Instance().AddObserverInfo(h); // m_userNameList.Add(GameManager.Instance().PLAYER.USER_NAME); // ----------------------------------------------------- // // GameStartUserSetup(GameManager.Instance().PLAYER.USER_NAME); SendOrderMessage(JSONMessageTool.ToJsonOrderUserCrateCharacter( GameManager.Instance().PLAYER.USER_NAME, GameManager.Instance().PLAYER.SKELETON_DATA_ASSET)); } SoundManager.Instance().PlayBGM(2); m_chatUI.SetActive(true); GameManager.Instance().m_curSceneState = "play"; }