// Update is called once per frame void Update() { if (removeTime != 0) { removeTime += Time.deltaTime; if (removeTime >= 1.5f) { PlayerManager.instance.TurnOver(); PlayerManager.instance.RemovePlayer(this); } } PlayerManager pm = PlayerManager.instance; if (act == ACT.IDLE) { anim.SetBool("Attack", false); if (pm.Players[pm.CurTurnIdx] == this) { MapManager.instance.SetHexColor(CurHex, Color.grey); } if (pm.Players[pm.CurTurnIdx] == this) { aiProc(); } } else if (act == ACT.MOVING) { anim.SetBool("Run", true); if (MoveHexes.Count == 0) { act = ACT.IDLE; PlayerManager.instance.TurnOver(); return; } Hex nextHex = MoveHexes[0]; float dis = Vector3.Distance(transform.position, nextHex.transform.position); if (dis > 0.1f) { transform.position += (nextHex.transform.position - transform.position).normalized * Status.MoveSpeed * Time.smoothDeltaTime; } else { transform.position = nextHex.transform.position; MoveHexes.RemoveAt(0); if (MoveHexes.Count == 0) { anim.SetBool("Run", false); act = ACT.IDLE; CurHex = nextHex; PlayerManager.instance.TurnOver(); } } } }
// Update is called once per frame void Update() { PlayerManager pm = PlayerManager.instance; if (act == ACT.IDLE) { if (pm.Players[pm.CurTurnIdx] == this) { MapManager.instance.SetHexColor(CurHex, Color.grey); anim.SetBool("Attack", false); } } if (act == ACT.MOVING) { anim.SetBool("Run", true); Hex nextHex = MoveHexes[0]; float dis = Vector3.Distance(transform.position, nextHex.transform.position); if (dis > 0.1f) { transform.position += (nextHex.transform.position - transform.position).normalized * Status.MoveSpeed * Time.smoothDeltaTime; transform.rotation = Quaternion.LookRotation((nextHex.transform.position - transform.position).normalized); } else { transform.position = nextHex.transform.position; MoveHexes.RemoveAt(0); if (MoveHexes.Count == 0) { act = ACT.IDLE; CurHex = nextHex; anim.SetBool("Run", false); PlayerManager.instance.TurnOver(); } } } }
public void AIProcess() { PlayerManager pm = PlayerManager.GetInst(); if (act == ACT.CASTING && casting == true) { Debug.Log("hh"); if (m_type == Type.GOLEM) { anim.SetTrigger("Shockwave Attack"); MapManager.GetInst().MarkShockRange(); } else { act = ACT.JUMP; MapManager.GetInst().MarkAttackRange(CurHex, 4, false); } for (int j = 0; j < pm.Players.Count; ++j) { if (pm.Players[j].CurHex.At_Marked == true) { if (pm.Players[j].m_type != Type.MONSTER && pm.Players[j].m_type != Type.BOSS && pm.Players[j].m_type != Type.GOLEM) { if (((UserPlayer)pm.Players[j]).Equip == false) { Vector3 height = pm.Players[j].transform.position; if (height.y < 2) { pm.Players[j].GetDamage(100); pm.Players[j].act = ACT.STUN; } EffectManager.GetInst().Play(pm.Players[j].CurHex.gameObject); } else { Vector3 height = pm.Players[j].transform.position; if (height.y < 2) { ((UserPlayer)pm.Players[j]).DestroyEquip(); } } } } } if (m_type == Type.GOLEM) { if (act == ACT.CASTING) { MapManager.GetInst().ResetMapColor(); act = ACT.IDLE; PlayerManager.GetInst().TurnOver(); } } casting = false; } if (act == ACT.IDLE) { anim.SetBool("attack", false); if (pm.Players[pm.CurTurnIdx] == this) { AiProc(); } } if (act == ACT.JUMP) { Vector3 gravity = new Vector3(0, -9.8f, 0); Vector3 v = transform.position; float speed = 15; if (v.y <= 10) { v.y += Time.deltaTime * speed; speed -= Time.deltaTime; transform.position = v; } else { act = ACT.JUMPDOWN; } } if (act == ACT.JUMPDOWN) { Vector3 gravity = new Vector3(0, -9.8f, 0); Vector3 v = transform.position; float speed = 12; if (v.y >= 1) { v.y -= Time.deltaTime * speed; speed += Time.deltaTime * 2; transform.position = v; if (ef_time > 0.2) { EffectManager.GetInst().ShowEffect_Summon(CurHex.gameObject, 7, v.y); ef_time = 0f; } } else { act = ACT.IDLE; EffectManager.GetInst().ShowEffect_Summon(CurHex.gameObject, 8, 1f); anim.SetBool("attack", false); PlayerManager.GetInst().TurnOver(); } } if (ACT.ATTACKING == act) { // anim.SetBool("attack", true); } if (act == ACT.MOVING) {//이동처리 if (MoveHexes.Count == 0) { act = ACT.IDLE; anim.SetBool("attack", false); PlayerManager.GetInst().TurnOver(); return; } Hex nextHex = MoveHexes[0]; if (MapManager.GetInst().MapSizeY > 0) { Point p = new Point(nextHex.MapPos.GetX(), nextHex.MapPos.GetY() + 1, nextHex.MapPos.GetZ()); if (MapManager.GetInst().Map[p.GetX()][p.GetY()][p.GetZ()].mesh_draw == true) { nextHex = MapManager.GetInst().Map[p.GetX()][p.GetY()][p.GetZ()]; jump = true; } else { jump = false; } } Vector3 v = nextHex.transform.position; v.y += m_y; float distance = Vector3.Distance(transform.position, v); if (distance >= 1.0f) //이동중 { anim.SetBool("attack", false); anim.SetBool("run", true); transform.position += (v - transform.position).normalized * 3f * Time.smoothDeltaTime; if (jump == false) { transform.rotation = Quaternion.LookRotation((v - transform.position).normalized); if (id != 1 && id != 5) { Vector3 r = transform.rotation.eulerAngles; r.y -= 90; transform.rotation = Quaternion.Euler(r); } } } else //다음 목표 hex에 도착함 { v = nextHex.transform.position; v.y += m_y; transform.position = v; MoveHexes.RemoveAt(0); if (MoveHexes.Count <= 0)//최종 dest { anim.SetBool("run", false); act = ACT.IDLE; Point temppos = new Point(nextHex.MapPos.GetX(), 0, nextHex.MapPos.GetZ()); CurHex = MapManager.GetInst().Map[temppos.GetX()][temppos.GetY()][temppos.GetZ()]; CurHex.Passable = false; anim.SetBool("attack", false); PlayerManager.GetInst().TurnOver(); } } } }
void Update() { if (status.Curhp <= 0) { act = ACT.DIYING; } ShowCondition(); if (brokentime != 0) { brokentime += Time.deltaTime; if (brokentime > 1.5) { GameObject.Destroy(equip.gameObject); brokentime = 0f; } } PlayerManager pm = PlayerManager.GetInst(); if (removeTime != 0) { removeTime += Time.deltaTime; if (removeTime >= 1.5f) { for (int i = 0; i < pm.Players.Count; ++i) { if (pm.Players[i].act == ACT.DIYING) { if (pm.CurTurnIdx == i) { pm.RemoveAfter(); pm.RemovePlayer(pm.Players[i]); pm.RemoveAfter(); } else { pm.RemoveAfter(); pm.RemovePlayer(pm.Players[i]); pm.RemoveAfter(); } } } } } if (Equip == true) { Vector3 v2 = transform.position; if (equip_type == "helmet") { v2.y += 1.5f; } else { v2.y += 3.5f; } equip.transform.position = v2; } if (act == ACT.IDLE) { anim.SetBool("attack", false); anim.SetBool("run", false); // if (pm.Players[pm.CurTurnIdx] == this) // { // ///MapManager.GetInst().SetHexColor(CurHex, Color.black); // } //CurHex.Passable = true; } if (act == ACT.MOVING) {//이동처리 CameraManager.GetInst().ResetCameraTarget(); CurHex.Passable = true; Hex nextHex = MoveHexes[0]; if (MapManager.GetInst().MapSizeY > 0) { Point p = new Point(nextHex.MapPos.GetX(), nextHex.MapPos.GetY() + 1, nextHex.MapPos.GetZ()); if (MapManager.GetInst().Map[p.GetX()][p.GetY()][p.GetZ()].mesh_draw == true) { nextHex = MapManager.GetInst().Map[p.GetX()][p.GetY()][p.GetZ()]; jump = true; } else { jump = false; } } Vector3 v = nextHex.transform.position; v.y += 1.0f; float distance = Vector3.Distance(transform.position, v); if (distance >= 0.2f) //이동중 { anim.SetBool("run", true); transform.position += (v - transform.position).normalized * status.MoveSpeed * Time.smoothDeltaTime; if (jump == false) { Quaternion s = Quaternion.LookRotation((v - transform.position).normalized); Vector3 r = s.eulerAngles; r.y -= 90; if (Equip == true) { equip.transform.rotation = Quaternion.Euler(r); } transform.rotation = Quaternion.Euler(r); } } else //다음 목표 hex에 도착함 { anim.SetBool("run", false); Hex temp = nextHex; v = nextHex.transform.position; v.y += 1.0f; transform.position = v; MoveHexes.RemoveAt(0); if (MoveHexes.Count <= 0)//최종 dest { Manager.GetInst().MoveCamPos(nextHex); CameraManager.GetInst().InitPos.x = nextHex.x; CameraManager.GetInst().InitPos.z = nextHex.z; CostManager.GetInst().CostDecrease(1); Point temppos = new Point(nextHex.MapPos.GetX(), 0, nextHex.MapPos.GetZ()); CurHex = MapManager.GetInst().Map[temppos.GetX()][temppos.GetY()][temppos.GetZ()]; CurHex.Passable = false; act = ACT.IDLE; if (CurHex.obj_id == 5) { EquipHelmet(); } //PlayerManager.GetInst().TurnOver(); } } } }