private void OnTriggerEnter(Collider other) { // 다른 챔피언과 충돌한 적 있는지 검사 if (isFirstAtk) { bool isTrig = false; // 현재 충돌한 콜라이더가 챔피언임을 확인 if (other.gameObject.layer.Equals(LayerMask.NameToLayer("Champion"))) { if (other.gameObject.Equals(mySkill.gameObject)) { return; } ChampionBehavior champBehav = other.GetComponent <ChampionBehavior>(); if (champBehav.team != mySkill.TheChampionBehaviour.team) { isTrig = true; float damage = mySkill.skillData.rDamage[mySkill.TheChampionData.skill_R - 1] + mySkill.Acalculate(mySkill.skillData.rAstat, mySkill.skillData.rAvalue, true); // 피격당한 챔피언의 HitMe 함수를 호출하고 스턴 상태이상을 건다 if (champBehav != null) { champBehav.HitMe(damage, "AP", mySkill.gameObject, mySkill.name); champBehav.myChampAtk.PauseAtk(3.5f, true); champBehav.myChampAtk.StunEffectToggle(true, 0); champBehav.myChampAtk.StunEffectToggle(false, 3.5f); Collider[] cols = Physics.OverlapSphere(champBehav.transform.position, 12); // 피격당한 챔피언 주변의 챔피언들에게도 데미지를 입힌다 foreach (Collider c in cols) { if (c.gameObject.layer.Equals(LayerMask.NameToLayer("Champion"))) { ChampionBehavior colChampBehav = c.GetComponent <ChampionBehavior>(); if (colChampBehav != null) { if (colChampBehav.team != mySkill.TheChampionBehaviour.team) { colChampBehav.HitMe(damage / 2f, "AP", mySkill.gameObject, mySkill.name); } } } } } } } // 피격당한 게 확인되면 isFirstAtk을 꺼 다른 이에게 충돌할 일이 없도록 처리한다. if (isTrig) { gameObject.SetActive(false); isFirstAtk = false; } } }
private void OnTriggerEnter(Collider other) { if (firstAtk) { bool trig = false; if (other.gameObject.layer.Equals(LayerMask.NameToLayer("Champion"))) { if (other.gameObject.Equals(mySkill.gameObject)) { return; } ChampionBehavior cB = other.GetComponent <ChampionBehavior>(); if (cB.Team != mySkill.TheChampionBehaviour.Team) { trig = true; float damage = mySkill.skillData.rDamage[mySkill.TheChampionData.skill_R - 1] + mySkill.Acalculate(mySkill.skillData.rAstat, mySkill.skillData.rAvalue); if (cB != null) { if (cB.HitMe(damage, "AP", mySkill.gameObject, mySkill.name)) { mySkill.TheChampionAtk.ResetTarget(); } cB.myChampAtk.PauseAtk(3.5f, true); cB.myChampAtk.StunEffectToggle(true, 0); cB.myChampAtk.StunEffectToggle(false, 3.5f); //cB.myChampAtk.PauseMove(3.5f * 10f); Collider[] col = Physics.OverlapSphere(cB.transform.position, 12); foreach (Collider c in col) { if (c.gameObject.layer.Equals(LayerMask.NameToLayer("Champion"))) { ChampionBehavior cCB = c.GetComponent <ChampionBehavior>(); if (cCB != null) { if (cCB.Team != mySkill.TheChampionBehaviour.Team) { //if(cCB.name.Contains("asd")) //{ // print(""); if (cCB.HitMe(damage / 2f, "AP", mySkill.gameObject, mySkill.name)) { // 스킬쏜애 주인이 나면 킬올리자 if (mySkill.GetComponent <PhotonView>().owner.Equals(PhotonNetwork.player)) { mySkill.TheChampionData.Kill_CS_Gold_Exp(other.gameObject.name, 0, other.transform.position); //if (!sysmsg) // sysmsg = GameObject.FindGameObjectWithTag("SystemMsg").GetComponent<SystemMessage>(); //sysmsg.sendKillmsg("ashe", other.GetComponent<ChampionData>().ChampionName, mySkill.TheChampionBehaviour.Team.ToString()); } } } } } } } } } if (trig) { gameObject.SetActive(false); firstAtk = false; } } }
/// <summary> /// 데미지를 계산하는 함수 /// </summary> /// <returns>계산된 데미지 값</returns> private float CalculateDamage() { return(mySkill.skillData.wDamage[mySkill.TheChampionData.skill_W - 1] + mySkill.Acalculate(mySkill.skillData.wAstat, mySkill.skillData.wAvalue, true)); }
private void OnTriggerEnter(Collider other) { a.Add(other.gameObject); if (firstAtk) { bool trig = false; if (other.gameObject.layer.Equals(LayerMask.NameToLayer("Champion"))) { if (!other.gameObject.Equals(mySkill.gameObject)) { ChampionBehavior mB = other.GetComponent <ChampionBehavior>(); if (mB.Team != mySkill.TheChampionBehaviour.Team) { trig = true; float damage = mySkill.skillData.wDamage[mySkill.TheChampionData.skill_W - 1] + mySkill.Acalculate(mySkill.skillData.wAstat, mySkill.skillData.wAvalue); if (mB != null) { if (mB.HitMe(damage, "AD", mySkill.gameObject, mySkill.name)) { mySkill.TheChampionAtk.ResetTarget(); if (!sysmsg) { sysmsg = GameObject.FindGameObjectWithTag("SystemMsg").GetComponent <SystemMessage>(); } //sysmsg.sendKillmsg("ashe", other.GetComponent<ChampionData>().ChampionName, mySkill.TheChampionBehaviour.Team.ToString()); // 스킬쏜애 주인이 나면 킬올리자 if (mySkill.GetComponent <PhotonView>().owner.Equals(PhotonNetwork.player)) { mySkill.TheChampionData.Kill_CS_Gold_Exp(other.gameObject.name, 0, other.transform.position); } } } } } } else if (other.gameObject.layer.Equals(LayerMask.NameToLayer("Monster"))) { MonsterBehaviour mB = other.GetComponent <MonsterBehaviour>(); float damage = mySkill.skillData.wDamage[mySkill.TheChampionData.skill_W - 1] + mySkill.Acalculate(mySkill.skillData.wAstat, mySkill.skillData.wAvalue); if (mB != null) { trig = true; if (mB.HitMe(damage, "AD", mySkill.gameObject)) { mySkill.TheChampionAtk.ResetTarget(); //// 스킬쏜애 주인이 나면 킬올리자 //if (mySkill.GetComponent<PhotonView>().owner.Equals(PhotonNetwork.player)) //{ // //mySkill.TheChampionData.Kill_CS_Gold_Exp(other.gameObject.name, 3, other.transform.position); //} } } } else if (other.tag.Equals("Minion")) { MinionBehavior mB = other.GetComponent <MinionBehavior>(); if (!other.name.Contains(mySkill.TheChampionBehaviour.Team)) { trig = true; float damage = mySkill.skillData.wDamage[mySkill.TheChampionData.skill_W - 1] + mySkill.Acalculate(mySkill.skillData.wAstat, mySkill.skillData.wAvalue); if (mB != null) { if (mB.HitMe(damage, "AD", mySkill.gameObject)) { mySkill.TheChampionAtk.ResetTarget(); // 스킬쏜애 주인이 나면 킬올리자 if (mySkill.GetComponent <PhotonView>().owner.Equals(PhotonNetwork.player)) { mySkill.TheChampionData.Kill_CS_Gold_Exp(other.gameObject.name, 1, other.transform.position); } } } } } if (trig) { gameObject.SetActive(false); firstAtk = false; } } }