//显示士兵信息 public void showUnitInformation(bool bShowInformation) { if (selectedUnit == null) { return; } if (bShowInformation == true) { SoldierType.Soldiers thisUnit = selectedUnit.m_pSoldier; int maxHP = thisUnit.getMaxHP(); UIManager.Instance.maxHP.GetComponent <Text>().text = maxHP.ToString(); int attack = thisUnit.getAttack(); UIManager.Instance.attackValue.GetComponent <Text>().text = attack.ToString(); int maxStep = thisUnit.getMaxMoveStep(); UIManager.Instance.maxMoveStep.GetComponent <Text>().text = maxStep.ToString(); UIManager.Instance.soldierTypeName.GetComponent <Text>().text = thisUnit.returnTypeName(); int currentHP = thisUnit.getCurrentHP(); UIManager.Instance.currentHP.GetComponent <Text>().text = currentHP.ToString(); int currentMoveStep = thisUnit.getCurrentMoveStep(); UIManager.Instance.currentMoveStep.GetComponent <Text>().text = currentMoveStep.ToString(); UIManager.Instance.soldierTypeImage.sprite = UIManager.Instance.unitSprites[thisUnit.returnSpriteIndex()]; } else { UIManager.Instance.maxHP.GetComponent <Text>().text = null; UIManager.Instance.attackValue.GetComponent <Text>().text = null; UIManager.Instance.maxMoveStep.GetComponent <Text>().text = null; UIManager.Instance.soldierTypeName.GetComponent <Text>().text = null; UIManager.Instance.soldierTypeImage.sprite = UIManager.Instance.noSprite; UIManager.Instance.currentMoveStep.GetComponent <Text>().text = null; UIManager.Instance.currentHP.GetComponent <Text>().text = null; } }
public void setEntity(int nType, int nAlign) { entityType = nType; unitAlign = GameManager.Instance.getTurn(); m_pSoldier = new SoldierType.Soldiers(entityType, nAlign); spriteIndex = m_pSoldier.returnSpriteIndex(); // gameObject.GetComponent<SpriteRenderer>().sprite = UIManager.Instance.unitSprites[spriteIndex]; }
void mouseClickHex(GameObject pTile) { if (Input.GetMouseButton(0)) { //pTile.GetComponent<SpriteRenderer>().color = Color.red; if (selectedUnit == null) { return; } SoldierType.Soldiers thisSelectedUnitType = selectedUnit.m_pSoldier; if (clickUnit == false && !CheckIfHasSoldierInGrid() && soldierActionScript.actionModeName != "Attack" && thisSelectedUnitType.getCurrentMoveStep() > 0) { if (selectedUnit.greenTiles.Contains(pTile)) { if (selectedUnitObject == null) { return; } selectedUnit.destination = pTile.transform.position; int x = GameManager.Instance.getTileIndexXDic(pTile.name); GameManager.Instance.setUnitPosXIndex(selectedUnitObject.name, x); int y = GameManager.Instance.getTileIndexYDic(pTile.name); GameManager.Instance.setUnitPosYIndex(selectedUnitObject.name, y); selectedUnit.destinationXIndex = x; selectedUnit.destinationYIndex = y; selectedUnit.indexX = x; selectedUnit.indexY = y; Debug.Log("Destination: " + "xIndex: " + x + " yIndex: " + y); if (selectedUnit.entityType == 1 || selectedUnit.entityType == 2 || selectedUnit.entityType == 4 || selectedUnit.entityType == 6 || selectedUnit.entityType == 8) { SoundEffectManager.Instance.playAudio(4); } else if (selectedUnit.entityType == 3) { SoundEffectManager.Instance.playAudio(11); } else if (selectedUnit.entityType == 7 || selectedUnit.entityType == 5) { SoundEffectManager.Instance.playAudio(7); } //thisSelectedUnitType.setCurrentMoveStep(1); } } } }
/* * public void setAttackDistanceIndex() { * int a = GameManager.Instance.getUnitPosXIndex(selectedSoldier.name); * int b = GameManager.Instance.getUnitPosYIndex(selectedSoldier.name); * SoldierType.Soldiers mySoldier = selectedSoldier.GetComponent<Unit>().m_pSoldier; * if (mySoldier.getAttackDistance() == 1) { * if (b % 2 == 1) * { * checkEnemyWithinAttackDistance(a + 1, b); * checkEnemyWithinAttackDistance(a, b + 1); * checkEnemyWithinAttackDistance(a + 1, b + 1); * checkEnemyWithinAttackDistance(a + 1, b - 1); * checkEnemyWithinAttackDistance(a, b - 1); * checkEnemyWithinAttackDistance(a, b); * checkEnemyWithinAttackDistance(a - 1, b); * } * else * { * checkEnemyWithinAttackDistance(a, b + 1); * checkEnemyWithinAttackDistance(a + 1, b); * checkEnemyWithinAttackDistance(a - 1, b + 1); * checkEnemyWithinAttackDistance(a - 1, b); * checkEnemyWithinAttackDistance(a - 1, b - 1); * checkEnemyWithinAttackDistance(a, b - 1); * checkEnemyWithinAttackDistance(a, b); * } * } else if (mySoldier.getAttackDistance() == 2) { * if (b % 2 == 1) * { * checkEnemyWithinAttackDistance(a + 1, b); * checkEnemyWithinAttackDistance(a, b + 1); * checkEnemyWithinAttackDistance(a + 1, b + 1); * checkEnemyWithinAttackDistance(a + 1, b - 1); * checkEnemyWithinAttackDistance(a, b - 1); * checkEnemyWithinAttackDistance(a, b); * checkEnemyWithinAttackDistance(a - 1, b); * checkEnemyWithinAttackDistance(a + 2, b); * checkEnemyWithinAttackDistance(a + 2,b - 1); * checkEnemyWithinAttackDistance(a + 1, b - 2 ); * checkEnemyWithinAttackDistance(a,b-2); * checkEnemyWithinAttackDistance(a-1,b-2 ); * checkEnemyWithinAttackDistance(a-1,b-1 ); * checkEnemyWithinAttackDistance(a-2,b ); * checkEnemyWithinAttackDistance(a-1,b+1 ); * checkEnemyWithinAttackDistance(a - 1,b+2 ); * checkEnemyWithinAttackDistance(a,b+2 ); * checkEnemyWithinAttackDistance(a + 1,b + 2); * checkEnemyWithinAttackDistance(a + 2, b + 1); * * } * else * { * checkEnemyWithinAttackDistance(a, b + 1); * checkEnemyWithinAttackDistance(a + 1, b); * checkEnemyWithinAttackDistance(a - 1, b + 1); * checkEnemyWithinAttackDistance(a - 1, b); * checkEnemyWithinAttackDistance(a - 1, b - 1); * checkEnemyWithinAttackDistance(a, b - 1); * checkEnemyWithinAttackDistance(a, b); * checkEnemyWithinAttackDistance(a+2, b); * checkEnemyWithinAttackDistance(a+1,b-1 ); * checkEnemyWithinAttackDistance(a+1,b-2 ); * checkEnemyWithinAttackDistance(a,b-2 ); * checkEnemyWithinAttackDistance(a-1,b-2 ); * checkEnemyWithinAttackDistance(a-2,b-1 ); * checkEnemyWithinAttackDistance(a-2, b); * checkEnemyWithinAttackDistance(a-2,b+1 ); * checkEnemyWithinAttackDistance(a-1,b+2 ); * checkEnemyWithinAttackDistance(a,b+2 ); * checkEnemyWithinAttackDistance(a+1, b+2); * checkEnemyWithinAttackDistance(a+1, b+1); * } * } * } * * * void checkEnemyWithinAttackDistance(int x, int y) { * int enemyXindex = GameManager.Instance.getUnitPosXIndex(preEnemyObject.name); * int enemyYindex = GameManager.Instance.getUnitPosYIndex(preEnemyObject.name); * } */ //升级,最大血量和当前血量各加5 public void addHealth() { if (selectedSoldier.GetComponent <Unit>() == null || selectedSoldier == null) { return; } if (selectedSoldier.GetComponent <Unit>().beenUpgraded == false) { if (GameManager.Instance.getTurn() == 0) { if (selectedSoldier.GetComponent <Unit>().m_pSoldier.getXPToLevelUp() > m_player1.getXP()) { return; } else { SoldierType.Soldiers mySoldier = selectedSoldier.GetComponent <Unit>().m_pSoldier; mySoldier.modifyMaxHP(5); mySoldier.modifyHP(5); selectedSoldier.GetComponent <Unit>().beenUpgraded = true; GameObject popText = Instantiate(floatingText, selectedSoldier.transform.position, Quaternion.identity); popText.GetComponent <TextMesh>().text = "Max HP + 5"; popText.GetComponent <TextMesh>().color = Color.green; SoundEffectManager.Instance.playAudio(2); m_player1.modifyXP(-selectedSoldier.GetComponent <Unit>().m_pSoldier.getXPToLevelUp()); } } else if (GameManager.Instance.getTurn() == 1) { if (selectedSoldier.GetComponent <Unit>().m_pSoldier.getXPToLevelUp() > m_player2.getXP()) { return; } else { SoldierType.Soldiers mySoldier = selectedSoldier.GetComponent <Unit>().m_pSoldier; mySoldier.modifyMaxHP(5); mySoldier.modifyHP(5); selectedSoldier.GetComponent <Unit>().beenUpgraded = true; GameObject popText = Instantiate(floatingText, selectedSoldier.transform.position, Quaternion.identity); popText.GetComponent <TextMesh>().text = "Max HP + 5"; popText.GetComponent <TextMesh>().color = Color.green; SoundEffectManager.Instance.playAudio(2); m_player2.modifyXP(-selectedSoldier.GetComponent <Unit>().m_pSoldier.getXPToLevelUp()); } } } }
// Update is called once per frame void Update() { if (actionModeName != "Attack") { destroyAttackArrow(); } selectedSoldier = myMouseControllerScript.selectedUnitObject; if (selectedSoldier == null || selectedSoldier.GetComponent <Unit>() == null) { return; } m_pUnit = selectedSoldier.GetComponent <Unit>().m_pSoldier; attackMode(); if (actionModeName != "Attack") { if (GameObject.Find(selectedSoldier.name + "_attackArrow") != null) { Destroy(GameObject.Find(selectedSoldier.name + "_attackArrow")); } } /* * if (bCancelAttackMode == true) { * float curTimeStamp = Time.time; * if (curTimeStamp > nCancelAttackModeTimeStamp + 20f) * { * actionModeName = null; * Reset(); * } * } */ if (attackEndFrame != 0) { if (Time.frameCount - attackEndFrame > 60) { Reset(); attackEndFrame = 0; } } }
//左键攻击 void pressLeftMouseButtonToAttack(GameObject enemyObj) { if (Input.GetMouseButtonUp(0)) { if (enemyObj.GetComponent <Unit>() == null || selectedSoldier.GetComponent <Unit>() == null) { return; } SoldierType.Soldiers thisEnemyObj = enemyObj.GetComponent <Unit>().m_pSoldier; SoldierType.Soldiers mySoldier = selectedSoldier.GetComponent <Unit>().m_pSoldier; int attack = mySoldier.getAttack(); Debug.Log("attack: " + attack); int defense = thisEnemyObj.getDefense(); if (defense > 0) { if (attack > defense) { attack -= defense; thisEnemyObj.setDefense(0); } else { attack = 0; thisEnemyObj.modifyDefense(-attack); } } thisEnemyObj.modifyHP(-attack); GameObject floatingTextObj = Instantiate(floatingText, enemyObj.transform.position, Quaternion.identity); floatingTextObj.GetComponent <TextMesh>().text = "-" + attack.ToString(); Instantiate(bloodPS, enemyObj.transform.position, Quaternion.identity); int selectedSoldierType = selectedSoldier.GetComponent <Unit>().entityType; //攻击音效 if (selectedSoldierType == 1 || selectedSoldierType == 2 || selectedSoldierType == 3) { SoundEffectManager.Instance.playAudio(5); } else if (selectedSoldierType == 4) { SoundEffectManager.Instance.playAudio(8); } else if (selectedSoldierType == 5 || selectedSoldierType == 7) { SoundEffectManager.Instance.playAudio(6); } else if (selectedSoldierType == 6) { SoundEffectManager.Instance.playAudio(9); } else if (selectedSoldierType == 8) { SoundEffectManager.Instance.playAudio(10); } selectedSoldier.GetComponent <Unit>().m_pSoldier.modifyCurrentMoveStep(-1); myCamShakeScript.shake(0.15f, 0.3f); //bCancelAttackMode = true; // actionModeName = null; destroyAttackArrow(); attackEndFrame = Time.frameCount; //Reset(); } }
void tilesAroundUnit() { int a = GameManager.Instance.getUnitPosXIndex(selectedUnitObject.name); int b = GameManager.Instance.getUnitPosYIndex(selectedUnitObject.name); SoldierType.Soldiers mySoldier = selectedUnitObject.GetComponent <Unit>().m_pSoldier; if (mySoldier.getView() == 1) { if (b % 2 == 1) { removeTiles(a + 1, b); removeTiles(a, b + 1); removeTiles(a + 1, b + 1); removeTiles(a + 1, b - 1); removeTiles(a, b - 1); removeTiles(a, b); removeTiles(a - 1, b); } else { removeTiles(a, b + 1); removeTiles(a + 1, b); removeTiles(a - 1, b + 1); removeTiles(a - 1, b); removeTiles(a - 1, b - 1); removeTiles(a, b - 1); removeTiles(a, b); } } else if (mySoldier.getView() == 2) { if (b % 2 == 1) { removeTiles(a + 1, b); removeTiles(a, b + 1); removeTiles(a + 1, b + 1); removeTiles(a + 1, b - 1); removeTiles(a, b - 1); removeTiles(a, b); removeTiles(a - 1, b); removeTiles(a + 2, b); removeTiles(a + 2, b - 1); removeTiles(a + 1, b - 2); removeTiles(a, b - 2); removeTiles(a - 1, b - 2); removeTiles(a - 1, b - 1); removeTiles(a - 2, b); removeTiles(a - 1, b + 1); removeTiles(a - 1, b + 2); removeTiles(a, b + 2); removeTiles(a + 1, b + 2); removeTiles(a + 2, b + 1); } else { removeTiles(a, b + 1); removeTiles(a + 1, b); removeTiles(a - 1, b + 1); removeTiles(a - 1, b); removeTiles(a - 1, b - 1); removeTiles(a, b - 1); removeTiles(a, b); removeTiles(a + 2, b); removeTiles(a + 1, b - 1); removeTiles(a + 1, b - 2); removeTiles(a, b - 2); removeTiles(a - 1, b - 2); removeTiles(a - 2, b - 1); removeTiles(a - 2, b); removeTiles(a - 2, b + 1); removeTiles(a - 1, b + 2); removeTiles(a, b + 2); removeTiles(a + 1, b + 2); removeTiles(a + 1, b + 1); } } }