public void Damage(int _iAttack, string _strAttribute, int _iCount) { int iDamage = enemy_param.Damage(_iAttack, _strAttribute); Defines.ATTRIBUTE_CONDITION condition = Defines.GetAttributeCondition(enemy_param.attribute, _strAttribute); Color damage_color = Defines.GetAttributeDamageColor(condition); StartCoroutine(create_damage_num(iDamage, 0.1f * _iCount, damage_color)); }
public void Damage(int _iAttack, string _strAttribute) { // 減るHPがないときはダメージを受けない //Debug.Log(string.Format("hp={0} is_dead={1}", DataManager.Instance.dataChara.is_dead, DataManager.Instance.dataChara.hp)); if (DataManager.Instance.dataChara.hp < 0 || DataManager.Instance.dataChara.is_dead) { return; } const float DAMAGE_VECTOR_BASE = -0.2f; const float DAMAGE_VECTOR_SWING = 0.1f; /* * float fDamage = (float)(_iAttack * _iAttack) / (float)DataManager.Instance.dataChara.defence * (DAMAGE_RATE + (UtilRand.GetRange(DAMAGE_SWING) - DAMAGE_SWING * 0.5f)); * fDamage *= Defines.GetAttributeRate(DataManager.Instance.dataChara.attribute_defence, _strAttribute); * if (fDamage < 1.0f) * { * fDamage = 1.0f; * } * int iDamageResult = (int)fDamage; */ int iDamageResult = CalcDamage.Damage(_iAttack, _strAttribute, DataManager.Instance.dataChara.defence, DataManager.Instance.dataChara.attribute_defence); //Debug.Log(string.Format("chara attack={0} defence={1}", _iAttack, DataManager.Instance.dataChara.defence)); Defines.ATTRIBUTE_CONDITION condition = Defines.GetAttributeCondition(DataManager.Instance.dataChara.attribute_defence, _strAttribute); Color damage_color = Defines.GetAttributeDamageColor(condition); //Debug.Log("player damage :" + iDamageResult.ToString()); Quaternion rot = new Quaternion(0.0f, 0.0f, 0.0f, 0.0f); GameObject obj = Instantiate(m_prefDamageText, Vector3.zero, rot, m_goRootDamageText.transform) as GameObject; obj.SetActive(true); obj.transform.localPosition = Vector3.zero; //obj.GetComponent<Animator>().SetInteger("damage_level", 1); obj.GetComponent <TMPro.TextMeshPro>().text = iDamageResult.ToString(); obj.GetComponent <TMPro.TextMeshPro>().color = damage_color; Vector2 dir = new Vector2( DAMAGE_VECTOR_BASE - (UtilRand.GetRange(DAMAGE_VECTOR_SWING) + DAMAGE_VECTOR_SWING * 0.5f), 1.0f + (UtilRand.GetRange(DAMAGE_VECTOR_SWING) + DAMAGE_VECTOR_SWING * 0.5f)); obj.GetComponent <Rigidbody2D>().AddForce(200f * dir); Destroy(obj, 2); DataManager.Instance.dataChara.hp -= iDamageResult; GameMain.Instance.BattleLog(string.Format("<color=red>{0}</color>のダメージを受けた!", iDamageResult)); }