// Update is called once per frame void Update() { if (m_isCanAction) { if (Input.GetMouseButtonDown(1)) { m_currentPlayerActionType = PlayerActionType.Null; } switch (m_currentPlayerActionType) { case PlayerActionType.Null: break; case PlayerActionType.CanMove: { if (Input.GetMouseButtonDown(0)) { RaycastHit hit; if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit)) { if (hit.collider.CompareTag("MapItem")) { if (hit.collider.GetComponent <MapItem>().m_isWalkable) { Move(hit.collider.GetComponent <MapItem>().m_itemPosVector2); } } } } } break; case PlayerActionType.CanAttack: { if (Input.GetMouseButtonDown(0)) { RaycastHit[] hits = Physics.RaycastAll(Camera.main.ScreenPointToRay(Input.mousePosition)); if (hits != null) { for (int i = 0; i < hits.Length; i++) { if (hits[i].collider.CompareTag("Enemy")) { Vector3 enemyPos = hits[i].collider.transform.position; if (MapMgr.Instance.m_mapItems[(int)enemyPos.x, (int)enemyPos.z].m_currentType == MapItemType.Enemy) { Attack(hits[i].collider.GetComponent <AICtrl>()); break; } } } } } break; } case PlayerActionType.CanAddNumber: { if (Input.GetMouseButtonDown(0)) { RaycastHit[] hits = Physics.RaycastAll(Camera.main.ScreenPointToRay(Input.mousePosition)); if (hits != null) { for (int i = 0; i < hits.Length; i++) { if (hits[i].collider.CompareTag("Player")) { m_actionCtrl.OverAction(); break; } } } } } break; } } }