Ejemplo n.º 1
0
 IEnumerator AtkMotion()
 {
     while (true)
     {
         if (!isAtkPause)
         {
             bool check = true;
             if (!isTargetting)
             {
                 check = false;
             }
             else if (AtkTargetObj == null)
             {
                 check = false;
             }
             else if (AtkTargetObj.Equals(AStarTargetObj))
             {
                 check = false;
             }
             if (check)
             {
                 if (AtkTargetObj.tag.Equals("Minion"))
                 {
                     MinionBehavior behav = AtkTargetObj.GetComponent <MinionBehavior>();
                     if (behav != null)
                     {
                         if (behav.HitMe(myChampionData.mystat.Attack_Damage, "AD"))
                         {
                             ResetTarget();
                         }
                     }
                 }
                 else if (AtkTargetObj.tag.Equals("Player"))
                 {//이 태그대로 할건지 바뀌는지는 모르겠음. 우선 챔피언 공격임.
                     ChampionBehavior behav = AtkTargetObj.GetComponent <ChampionBehavior>();
                     if (behav != null)
                     {
                         if (behav.HitMe(myChampionData.mystat.Attack_Damage, "AD", gameObject))
                         {
                             ResetTarget();
                         }
                     }
                 }
                 else if (AtkTargetObj.tag.Equals("Tower"))
                 {
                     TowerBehaviour behav = AtkTargetObj.GetComponent <TowerBehaviour>();
                     if (behav != null)
                     {
                         if (behav.HitMe(myChampionData.mystat.Attack_Damage))
                         {
                             ResetTarget();
                         }
                     }
                 }
             }
         }
         yield return(new WaitForSeconds(1));
     }
 }
Ejemplo n.º 2
0
    private void Awake()
    {
        mainCamera = Camera.main;
        GameObject CanvasObject = GameObject.FindGameObjectWithTag("HpbarCanvas");

        myCanvas       = CanvasObject.GetComponent <Canvas>();
        fog            = GetComponent <FogOfWarEntity>();
        minionBehavior = GetComponent <MinionBehavior>();
        team           = minionBehavior.team.ToString().ToLower();
        ThisMinion     = this.gameObject;
        RealBar        = transform.GetChild(0).gameObject;
    }
Ejemplo n.º 3
0
    //값 초기화
    private void Start()
    {
        if (myMinion.name.Contains("Blue"))
        {
            enemyColor = "Red";
        }
        else
        {
            enemyColor = "Blue";
        }

        myBehav          = myMinion.GetComponent <MinionBehavior>();
        TheInGameManager = GameObject.FindGameObjectWithTag("InGameManager").GetComponent <InGameManager>();
    }
Ejemplo n.º 4
0
 private void Start()
 {
     if (myMinion.name.Contains("Blue"))
     {
         enemyColor = "Red";
     }
     else
     {
         enemyColor = "Blue";
     }
     //MoveTarget = GetComponent<AIDestinationSetter>().target.gameObject;
     myBehav       = myMinion.GetComponent <MinionBehavior>();
     inGameManager = GameObject.FindGameObjectWithTag("InGameManager").GetComponent <InGameManager>();
 }
Ejemplo n.º 5
0
 private void Start()
 {
     Anim.SetBool("walking", true);
     if (myMinion.name.Contains("Blue"))
     {
         enemyColor = "Red";
     }
     else
     {
         enemyColor = "Blue";
     }
     //MoveTarget = GetComponent<AIDestinationSetter>().target.gameObject;
     myBehav = myMinion.GetComponent <MinionBehavior>();
 }
Ejemplo n.º 6
0
    private void OnEnable()
    {
        myteam     = PhotonNetwork.player.GetTeam().ToString().ToLower();
        Icon       = GetComponent <SpriteRenderer>();
        MinionRed  = Resources.Load <Sprite>("Minimap/MIcon_Red_Minion");
        MinionBlue = Resources.Load <Sprite>("Minimap/MIcon_Blue_Minion") as Sprite;
        TowerRed   = Resources.Load <Sprite>("Minimap/MIcon_Red_Tower") as Sprite;
        TowerBlue  = Resources.Load <Sprite>("Minimap/MIcon_Blue_Tower") as Sprite;

        if (transform.parent.name.Contains("Minion"))
        {
            MBehavior = transform.parent.GetComponent <MinionBehavior>();
            if (myteam.Equals(MBehavior.team.ToString().ToLower()))
            {
                Icon.sprite = MinionBlue;
            }
            else
            {
                Icon.sprite = MinionRed;
            }
            transform.localPosition = new Vector3(0, 200, 0);
            transform.localRotation = Quaternion.Euler(90, 0, 0);
            transform.localScale    = new Vector3(3, 3, 3);
        }
        else if (transform.parent.name.Contains("Tower"))
        {
            TBehavior = transform.parent.GetComponent <TowerBehaviour>();
            if (myteam.Equals(TBehavior.Team.ToString().ToLower()))
            {
                Icon.sprite = TowerBlue;
            }
            else
            {
                Icon.sprite = TowerRed;
            }
        }
        else if (transform.parent.name.Contains("Nexus") || transform.parent.name.Contains("Suppressor"))
        {
            SBehavior = transform.parent.GetComponent <SuppressorBehaviour>();
            if (myteam.Equals(SBehavior.Team.ToString().ToLower()))
            {
                Icon.sprite = TowerBlue;
            }
            else
            {
                Icon.sprite = TowerRed;
            }
        }
    }
Ejemplo n.º 7
0
    private void InitTarget(GameObject minion, GameObject point)
    {
        MinionBehavior minB   = minion.GetComponent <MinionBehavior>();
        MinionAtk      minAtk = minB.minAtk;

        if (minAtk == null)
        {
            minB.minAtk = minB.transform.GetComponentInChildren <MinionAtk>();
            minAtk      = minB.minAtk;
        }
        minion.GetComponent <AIDestinationSetter>().target = point.transform;
        minAtk.MoveTarget = point;
        minAtk.nowTarget  = null;
        minion.GetComponent <MinionBehavior>().spawnPoint = point.transform.position;
    }
Ejemplo n.º 8
0
    private void OnTriggerEnter(Collider other)
    {
        //충돌한 적의 종류에 따라 각각의 HitMe 함수를 호출한다
        if (other.tag.Equals("Minion"))
        {
            MinionBehavior minBehav = other.GetComponent <MinionBehavior>();

            if (!other.gameObject.name.Contains(mySkill.TheChampionBehaviour.team))
            {
                minBehav.minAtk.PauseAtk(1f, true);
                float damage = CalculateDamage();

                if (minBehav != null)
                {
                    int viewID = minBehav.GetComponent <PhotonView>().viewID;
                    minBehav.HitMe(damage, "AP", mySkill.gameObject);
                }
            }
        }
        else if (other.gameObject.layer.Equals(LayerMask.NameToLayer("Champion")))
        {
            ChampionBehavior champBehav = other.GetComponent <ChampionBehavior>();

            if (champBehav.team != mySkill.TheChampionBehaviour.team)
            {
                champBehav.myChampAtk.PauseAtk(1f, true);
                float damage = CalculateDamage();

                if (champBehav != null)
                {
                    int viewID = champBehav.GetComponent <PhotonView>().viewID;
                    champBehav.HitMe(damage, "AP", mySkill.gameObject, mySkill.name);
                }
            }
        }
        else if (other.gameObject.layer.Equals(LayerMask.NameToLayer("Monster")))
        {
            MonsterBehaviour monBehav = other.GetComponent <MonsterBehaviour>();
            monBehav.monAtk.PauseAtk(1f, true);
            float damage = CalculateDamage();

            if (monBehav != null)
            {
                int viewID = monBehav.GetComponent <PhotonView>().viewID;
                monBehav.HitMe(damage, "AP", mySkill.gameObject);
            }
        }
    }
Ejemplo n.º 9
0
    public void ProgressBarColorChange()
    {
        if (minionBehavior == null)
        {
            minionBehavior = GetComponent <MinionBehavior>();
        }

        if (PhotonNetwork.player.GetTeam().ToString().Equals(minionBehavior.team.ToString()))
        {
            mHpBar.Bar.GetComponent <Image>().color = myTeamColor;
        }
        else
        {
            mHpBar.Bar.GetComponent <Image>().color = enemyTeamColor;
        }
    }
Ejemplo n.º 10
0
    public void HitSync(int viewID)
    {
        GameObject g = PhotonView.Find(viewID).gameObject;

        if (g != null)
        {
            if (g.tag.Equals("Minion"))
            {
                MinionBehavior mB = g.GetComponent <MinionBehavior>();
                if (mB != null)
                {
                    mB.HitMe(stat.Attack_Damage, "AD", gameObject);
                }
                //print("MinionBehaviour is null");
            }
            else if (g.layer.Equals(LayerMask.NameToLayer("Champion")))
            {
                ChampionSound.instance.IamAttackedSound(Audio, g.name);
                g.GetComponent <ChampionBehavior>().HitMe(stat.Attack_Damage, "AD", gameObject, gameObject.name);
            }
        }
    }
Ejemplo n.º 11
0
    public void HitSync(int viewID)
    {
        GameObject obj = PhotonView.Find(viewID).gameObject;

        //각각 피격당한 대상의 HitMe 함수를 호출함.
        if (obj != null)
        {
            if (obj.tag.Equals("Minion"))
            {
                MinionBehavior minBehav = obj.GetComponent <MinionBehavior>();

                if (minBehav != null)
                {
                    minBehav.HitMe(stat.AttackDamage, "AD", gameObject);
                }
            }
            else if (obj.layer.Equals(LayerMask.NameToLayer("Champion")))
            {
                ChampionSound.instance.IamAttackedSound(audio, obj.name);
                obj.GetComponent <ChampionBehavior>().HitMe(stat.AttackDamage, "AD", gameObject, gameObject.name);
            }
        }
    }
Ejemplo n.º 12
0
    /// <summary>
    /// 공격을 담당하는 코루틴
    /// </summary>
    IEnumerator Attack()
    {
        while (!myChampBehav.isDead)
        {
            if (!isAtkPause)
            {
                bool isCheck = true;

                if (!isTargetting)
                {
                    isCheck = false;
                }
                else if (atkTargetObj == null)
                {
                    isCheck = false;
                }
                else if (atkTargetObj.Equals(aStarTargetObj))
                {
                    isCheck = false;
                }

                //타겟이 있다면 공격
                if (isCheck)
                {
                    myChampBehav.transform.DOLookAt(atkTargetObj.transform.position, 0);

                    //공격하는 대상과 피격당하는 대상을 구분하여 처리
                    if (atkTargetObj.tag.Equals("Minion"))
                    {
                        MakeAsheArrow();

                        MinionBehavior minBehav = atkTargetObj.GetComponent <MinionBehavior>();
                        AudioSource    minAudio = minBehav.transform.GetChild(minBehav.transform.childCount - 1).GetComponent <AudioSource>();

                        if (minBehav != null)
                        {
                            int viewID = minBehav.GetComponent <PhotonView>().viewID;
                            myChampBehav.HitRPC(viewID);
                            ChampionSound.instance.IamAttackedSound(minAudio, champName);

                            if (isAshe)
                            {
                                asheSkill.QCountUp();
                            }

                            minBehav.HitMe(myChampionData.totalStat.AttackDamage, "AD", myChampBehav.gameObject);

                            if (!skillKey.Equals(""))
                            {
                                if (--skillKeyNum < 1)
                                {
                                    skillKey = "";
                                }
                            }
                        }
                    }
                    else if (atkTargetObj.layer.Equals(LayerMask.NameToLayer("Champion")))
                    {
                        MakeAsheArrow();

                        ChampionBehavior champBehav = atkTargetObj.GetComponent <ChampionBehavior>();
                        AudioSource      champaudio = champBehav.gameObject.GetComponent <AudioSource>();

                        if (champBehav != null)
                        {
                            int viewID = champBehav.GetComponent <PhotonView>().viewID;
                            myChampBehav.HitRPC(viewID);
                            ChampionSound.instance.IamAttackedSound(champaudio, champName);

                            if (isAshe)
                            {
                                asheSkill.QCountUp();
                            }

                            champBehav.HitMe(myChampionData.totalStat.AttackDamage, "AD", myChampBehav.gameObject, myChampBehav.name);

                            if (!skillKey.Equals(""))
                            {
                                if (--skillKeyNum < 1)
                                {
                                    skillKey = "";
                                }
                            }
                        }
                    }
                    else if (atkTargetObj.tag.Equals("Tower"))
                    {
                        MakeAsheArrow();
                        TowerBehaviour towerBehav = atkTargetObj.GetComponent <TowerBehaviour>();
                        AudioSource    towerAudio = towerBehav.GetComponent <AudioSource>();

                        if (towerBehav != null)
                        {
                            string key     = "";
                            char[] keyChar = towerBehav.gameObject.name.ToCharArray();

                            for (int i = 13; i < 16; ++i)
                            {
                                key += keyChar[i];
                            }

                            myChampBehav.HitRPC(key);
                            ChampionSound.instance.IamAttackedSound(towerAudio, champName);

                            if (isAshe)
                            {
                                asheSkill.QCountUp();
                            }

                            // 타워를 파괴 시 팀의 cs, 골드, 경험치를 올린다
                            if (towerBehav.HitMe(myChampionData.totalStat.AttackDamage))
                            {
                                myChampionData.Kill_CS_Gold_Exp(atkTargetObj.name, 2, atkTargetObj.transform.position);
                                ResetTarget();
                            }

                            if (!skillKey.Equals(""))
                            {
                                if (--skillKeyNum < 1)
                                {
                                    skillKey = "";
                                }
                            }
                        }
                    }
                    else if (atkTargetObj.tag.Equals("Suppressor"))
                    {
                        MakeAsheArrow();
                        SuppressorBehaviour supBehav = atkTargetObj.GetComponent <SuppressorBehaviour>();

                        if (supBehav != null)
                        {
                            string key     = "";
                            char[] keyChar = supBehav.gameObject.name.ToCharArray();

                            for (int i = 11; i < 14; ++i)
                            {
                                key += keyChar[i];
                            }

                            myChampBehav.HitRPC(key);

                            if (isAshe)
                            {
                                asheSkill.QCountUp();
                            }

                            supBehav.HitMe(myChampionData.totalStat.AttackDamage);

                            if (!skillKey.Equals(""))
                            {
                                if (--skillKeyNum < 1)
                                {
                                    skillKey = "";
                                }
                            }
                        }
                    }
                    else if (atkTargetObj.tag.Equals("Nexus"))
                    {
                        MakeAsheArrow();
                        SuppressorBehaviour supBehav = atkTargetObj.GetComponent <SuppressorBehaviour>();

                        if (supBehav != null)
                        {
                            string key     = "";
                            char[] keyChar = supBehav.gameObject.name.ToCharArray();
                            key += keyChar[6];
                            myChampBehav.HitRPC(key);

                            if (isAshe)
                            {
                                asheSkill.QCountUp();
                            }

                            supBehav.HitMe(myChampionData.totalStat.AttackDamage);

                            if (!skillKey.Equals(""))
                            {
                                if (--skillKeyNum < 1)
                                {
                                    skillKey = "";
                                }
                            }
                        }
                    }
                    else if (atkTargetObj.layer.Equals(LayerMask.NameToLayer("Monster")))
                    {
                        MakeAsheArrow();
                        MonsterBehaviour monBehav = atkTargetObj.GetComponent <MonsterBehaviour>();

                        if (monBehav != null)
                        {
                            int viewID = monBehav.GetComponent <PhotonView>().viewID;
                            myChampBehav.HitRPC(viewID);

                            if (isAshe)
                            {
                                asheSkill.QCountUp();
                            }

                            monBehav.HitMe(myChampionData.totalStat.AttackDamage, "AD", myChamp);

                            if (!skillKey.Equals(""))
                            {
                                if (--skillKeyNum < 1)
                                {
                                    skillKey = "";
                                }
                            }
                        }
                    }
                }
            }

            float AtkSpeed = myChampionData.myStat.AttackSpeed * (1 + (myChampionData.totalStat.UP_AttackSpeed * (myChampionData.totalStat.Level - 1) + (myChampionData.totalStat.AttackSpeed - myChampionData.myStat.AttackSpeed)) / 100);
            //어택 딜레이타임을 1초로 설정
            atkDelayTime = 1f / AtkSpeed;

            yield return(new WaitForSeconds(atkDelayTime));
        }
    }
Ejemplo n.º 13
0
 private void Start()
 {
     col = GetComponent <SphereCollider>();
     mi  = GetComponentInParent <MinionBehavior>();
     setMinionCol();
 }
Ejemplo n.º 14
0
    private void Update()
    {
        damagetime -= Time.deltaTime;
        if (damagetime <= 0)
        {
            damagetime = 0.5f;
            for (int i = 0; i < EnemyList.Count; ++i)
            {
                if (EnemyList[i].Equals(mySkill.gameObject))
                {
                    continue;
                }
                float damage = mySkill.skillData.wDamage[mySkill.TheChampionData.skill_W - 1]
                               + mySkill.Acalculate(mySkill.skillData.wAstat, mySkill.skillData.wAvalue);
                if (EnemyList[i].layer.Equals(LayerMask.NameToLayer("Champion")))
                {
                    ChampionBehavior cB = EnemyList[i].GetComponent <ChampionBehavior>();
                    if (cB.Team != mySkill.TheChampionBehaviour.Team)
                    {
                        if (cB != null)
                        {
                            if (cB.HitMe(damage, "AP", mySkill.gameObject, mySkill.name))
                            {
                                mySkill.TheChampionAtk.ResetTarget();
                                //if (!sysmsg)
                                //    sysmsg = GameObject.FindGameObjectWithTag("SystemMsg").GetComponent<SystemMessage>();
                                //sysmsg.sendKillmsg("mundo", EnemyList[i].GetComponent<ChampionData>().ChampionName, mySkill.TheChampionBehaviour.Team.ToString());
                                // 스킬쏜애 주인이 나면 킬올리자
                                if (mySkill.GetComponent <PhotonView>().owner.Equals(PhotonNetwork.player))
                                {
                                    mySkill.TheChampionData.Kill_CS_Gold_Exp(EnemyList[i].gameObject.name, 0, EnemyList[i].transform.position);
                                }
                                EnemyDeleteStack.Push(EnemyList[i]);
                            }
                            if (cB.myChampionData.totalstat.Hp <= 0)
                            {
                                EnemyDeleteStack.Push(EnemyList[i]);
                            }
                        }
                    }
                }
                else if (EnemyList[i].layer.Equals(LayerMask.NameToLayer("Monster")))
                {
                    MonsterBehaviour mB = EnemyList[i].GetComponent <MonsterBehaviour>();
                    if (mB != null)
                    {
                        if (mB.HitMe(damage, "AP", mySkill.gameObject))
                        {
                            mySkill.TheChampionAtk.ResetTarget();

                            //// 스킬쏜애 주인이 나면 킬올리자
                            //if (mySkill.GetComponent<PhotonView>().owner.Equals(PhotonNetwork.player))
                            //{
                            //    mySkill.TheChampionData.Kill_CS_Gold_Exp(EnemyList[i].gameObject.name, 3, EnemyList[i].transform.position);
                            //}
                            EnemyDeleteStack.Push(EnemyList[i]);
                        }
                        if (mB.stat.Hp <= 0)
                        {
                            EnemyDeleteStack.Push(EnemyList[i]);
                        }
                    }
                }
                else if (EnemyList[i].tag.Equals("Minion"))
                {
                    MinionBehavior mB = EnemyList[i].GetComponent <MinionBehavior>();
                    if (!EnemyList[i].name.Contains(mySkill.TheChampionBehaviour.Team))
                    {
                        if (mB != null)
                        {
                            if (mB.HitMe(damage, "AP", mySkill.gameObject))
                            {
                                mySkill.TheChampionAtk.ResetTarget();

                                // 스킬쏜애 주인이 나면 킬올리자
                                if (mySkill.GetComponent <PhotonView>().owner.Equals(PhotonNetwork.player))
                                {
                                    mySkill.TheChampionData.Kill_CS_Gold_Exp(EnemyList[i].gameObject.name, 1, EnemyList[i].transform.position);
                                }
                                EnemyDeleteStack.Push(EnemyList[i]);
                            }
                            if (mB.stat.Hp <= 0)
                            {
                                EnemyDeleteStack.Push(EnemyList[i]);
                            }
                        }
                    }
                }
                while (EnemyDeleteStack.Count > 0)
                {
                    GameObject g = EnemyDeleteStack.Pop();
                    if (EnemyList.Contains(g))
                    {
                        EnemyList.Remove(g);
                    }
                }
            }
        }
    }
Ejemplo n.º 15
0
    private void Smite()
    {   //20 1-4 30 5-9 40 10- 14 50 15-18
        //370 + (20 * level) 500 Range model Edge range range)

        mousepos = Input.mousePosition;
        CamRay   = Camera.main.ScreenPointToRay(mousepos);
        bool ishit = Physics.Raycast(CamRay, out hit, Mathf.Infinity, layerMask); // 카메라 기준 레이, 월콜라이더 무시

        if (ishit)
        {
            Vector3 temp = hit.point;
            temp.y = Player.transform.position.y;

            float dist = Vector3.Distance(temp, Player.transform.position);
            if (dist <= SmiteRange)
            {
                Playerlevel = ChampData.totalstat.Level;
                if (Playerlevel <= 4 && Playerlevel >= 1)
                {
                    SmiteDam = 370 + (20 * Playerlevel);
                }
                else if (Playerlevel <= 9 && Playerlevel >= 5)
                {
                    SmiteDam = 370 + (30 * Playerlevel);
                }
                else if (Playerlevel <= 14 && Playerlevel >= 10)
                {
                    SmiteDam = 370 + (40 * Playerlevel);
                }
                else if (Playerlevel <= 18 && Playerlevel >= 15)
                {
                    SmiteDam = 370 + (50 * Playerlevel);
                }

                if (hit.collider.gameObject.layer.Equals(LayerMask.NameToLayer("Monster")))
                {
                    if (Vector3.Distance(Player.transform.position, hit.transform.position) <= SmiteRange)
                    {
                        SmiteTargetset = true;
                        //동기화 할것.
                        hit.collider.gameObject.GetComponent <MonsterBehaviour>().HitMe(SmiteDam, "FD", Player.gameObject);
                        SendEffect("Smite", hit.transform.position, team);
                        ChampionSound.instance.PlayPlayerFx(SoundManager.instance.Smite);
                        ChampData.totalstat.Hp += ChampData.totalstat.MaxHp * 0.1f;
                    }
                }
                else if (hit.collider.gameObject.name.Contains("Minion"))
                {
                    MinionBehavior M_behav = hit.collider.gameObject.GetComponent <MinionBehavior>();
                    if (M_behav.team.ToString().ToLower() != (team)) // 다른팀이면
                    {
                        if (Vector3.Distance(Player.transform.position, hit.transform.position) <= SmiteRange)
                        {
                            SmiteTargetset = true;
                            //동기화 할것.
                            hit.collider.gameObject.GetComponent <MinionBehavior>().HitMe(SmiteDam, "FD");
                            SendEffect("Smite", hit.transform.position, team);
                            ChampionSound.instance.PlayPlayerFx(SoundManager.instance.Smite);
                            ChampData.totalstat.Hp += ChampData.totalstat.MaxHp * 0.1f;
                        }
                        //동기화 해당 플레이어 프리팹의 코루틴 ignite 불러줄것
                    }
                }
                else
                {
                    SmiteTargetset = false;
                    //cursor.SetCursor(cursor.PreCursor, Vector2.zero);
                }
            }
        }
    }
Ejemplo n.º 16
0
    private void OnTriggerEnter(Collider other)
    {
        if (other.tag.Equals("Minion")) //나중에챔피언일때도적일때도조건에추가
        {                               //미니언의 경우 트리거 켜진건 공격 추-적 반경이라 디스턴스를 추가
         //if (Vector3.Distance(other.transform.position, transform.position) <= skillRange)
         //{
            MinionBehavior mB = other.GetComponent <MinionBehavior>();
            if (!other.gameObject.name.Contains(mySkill.TheChampionBehaviour.Team))
            {
                mB.minAtk.PauseAtk(1f, true);
                //other.GetComponent<Rigidbody>().AddForce(0, upPower, 0);
                //s = other.transform.DOJump(other.transform.position, 3, 1, 1f).OnUpdate(() => { if (mB.isDead) if (s != null) s.Kill(); });
                float damage = mySkill.skillData.qDamage[mySkill.TheChampionData.skill_Q - 1]
                               + mySkill.Acalculate(mySkill.skillData.qAstat, mySkill.skillData.qAvalue);
                //공격 코드(데미지 등) 삽입'
                //float damage = mySkill.QSkillInfo.myskill.Damage[mySkill.QSkillInfo.myskill.skillLevel]
                //    + mySkill.QSkillInfo.Acalculate(mySkill.QSkillInfo.myskill.Astat, mySkill.QSkillInfo.myskill.Avalue);

                if (mB != null)
                {
                    int viewID = mB.GetComponent <PhotonView>().viewID;
                    //mySkill.HitRPC(viewID, damage, "AP", "Jump");
                    if (mB.HitMe(damage, "AP", 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);
                        }
                    }
                }
            }
        }
        //else if (other.tag.Equals("Player"))
        else if (other.gameObject.layer.Equals(LayerMask.NameToLayer("Champion")))
        {
            ChampionBehavior cB = other.GetComponent <ChampionBehavior>();
            if (cB.Team != mySkill.TheChampionBehaviour.Team)
            {
                cB.myChampAtk.PauseAtk(1f, true);
                float damage = mySkill.skillData.qDamage[mySkill.TheChampionData.skill_Q - 1]
                               + mySkill.Acalculate(mySkill.skillData.qAstat, mySkill.skillData.qAvalue);
                if (cB != null)
                {
                    int viewID = cB.GetComponent <PhotonView>().viewID;
                    //mySkill.HitRPC(viewID, damage, "AP", "Jump");
                    if (cB.HitMe(damage, "AP", mySkill.gameObject, mySkill.name))
                    {
                        mySkill.TheChampionAtk.ResetTarget();
                        if (!sysmsg)
                        {
                            sysmsg = GameObject.FindGameObjectWithTag("SystemMsg").GetComponent <SystemMessage>();
                        }
                        sysmsg.sendKillmsg("alistar", 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);
                        }
                    }
                }
                //s = other.transform.DOJump(other.transform.position, 3, 1, 1f).OnUpdate(() =>
                //{
                //    if (cB.myChampionData.totalstat.Hp - ((damage * 100f) / (100f + cB.myChampionData.totalstat.Ability_Def)) <= 1)
                //    {
                //        if (s != null)
                //            s.Kill();
                //    }
                //});
            }
        }
        else if (other.gameObject.layer.Equals(LayerMask.NameToLayer("Monster")))
        {
            MonsterBehaviour mB = other.GetComponent <MonsterBehaviour>();
            mB.monAtk.PauseAtk(1f, true);
            //s = other.transform.DOJump(other.transform.position, 3, 1, 1f).OnUpdate(() => { if (mB.isDead) if (s != null) s.Kill(); });
            float damage = mySkill.skillData.qDamage[mySkill.TheChampionData.skill_Q - 1]
                           + mySkill.Acalculate(mySkill.skillData.qAstat, mySkill.skillData.qAvalue);
            if (mB != null)
            {
                int viewID = mB.GetComponent <PhotonView>().viewID;
                //mySkill.HitRPC(viewID, damage, "AP", "Jump");
                if (mB.HitMe(damage, "AP", 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);
                    //}
                }
            }
        }
    }
Ejemplo n.º 17
0
    private void Smite()
    {   //20 1-4 30 5-9 40 10- 14 50 15-18
        //370 + (20 * level) 500 Range model Edge range range)
        if (MousePosToWorldPosRay())
        {
            Vector3 temp = hit.point;
            temp.y = Player.transform.position.y;
            float dist = Vector3.Distance(temp, Player.transform.position);
            if (dist <= SmiteRange)
            {
                Playerlevel = ChampData.totalstat.Level;
                if (Playerlevel <= 4 && Playerlevel >= 1)
                {
                    SmiteDam = 370 + (20 * Playerlevel);
                }
                else if (Playerlevel <= 9 && Playerlevel >= 5)
                {
                    SmiteDam = 370 + (30 * Playerlevel);
                }
                else if (Playerlevel <= 14 && Playerlevel >= 10)
                {
                    SmiteDam = 370 + (40 * Playerlevel);
                }
                else if (Playerlevel <= 18 && Playerlevel >= 15)
                {
                    SmiteDam = 370 + (50 * Playerlevel);
                }

                if (hit.collider.gameObject.layer.Equals(LayerMask.NameToLayer("Monster")))
                {
                    if (Vector3.Distance(Player.transform.position, hit.transform.position) <= SmiteRange)
                    {
                        SmiteTargetset = true;
                        hit.collider.gameObject.GetComponent <MonsterBehaviour>().HitMe(SmiteDam, "FD", Player.gameObject);
                        SendEffect("Smite", hit.transform.position, team);
                        ChampionSound.instance.PlayPlayerFx(SoundManager.instance.Smite);
                        ChampData.totalstat.Hp += ChampData.totalstat.MaxHp * 0.1f;
                    }
                }
                else if (hit.collider.gameObject.name.Contains("Minion"))
                {
                    MinionBehavior M_behav = hit.collider.gameObject.GetComponent <MinionBehavior>();
                    if (M_behav.team.ToString().ToLower() != (team)) // 다른팀이면
                    {
                        if (Vector3.Distance(Player.transform.position, hit.transform.position) <= SmiteRange)
                        {
                            SmiteTargetset = true;
                            hit.collider.gameObject.GetComponent <MinionBehavior>().HitMe(SmiteDam, "FD");
                            SendEffect("Smite", hit.transform.position, team);
                            ChampionSound.instance.PlayPlayerFx(SoundManager.instance.Smite);
                            ChampData.totalstat.Hp += ChampData.totalstat.MaxHp * 0.1f;
                        }
                    }
                }
                else
                {
                    SmiteTargetset = false;
                }
            }
        }
    }
Ejemplo n.º 18
0
    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.qDamage[mySkill.TheChampionData.skill_Q - 1]
                                   + mySkill.Acalculate(mySkill.skillData.qAstat, mySkill.skillData.qAvalue);
                    if (cB != null)
                    {
                        //int viewID = mB.GetComponent<PhotonView>().viewID;
                        //mySkill.HitRPC(viewID, damage, "AP");
                        int x2 = 1;
                        ChampionSound.instance.PlayOtherFx(cB.GetComponentInChildren <AudioSource>(), ChampionSound.instance.Mundo_Q_Hit);
                        if (cB.HitMe(damage, "AP", mySkill.gameObject, mySkill.name))
                        {
                            x2 = 2;
                            mySkill.TheChampionAtk.ResetTarget();
                            if (!sysmsg)
                            {
                                sysmsg = GameObject.FindGameObjectWithTag("SystemMsg").GetComponent <SystemMessage>();
                            }
                            sysmsg.sendKillmsg("mundo", 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);
                            }
                        }
                        mySkill.Heal(damage * x2);
                    }
                }
            }
            else if (other.gameObject.layer.Equals(LayerMask.NameToLayer("Monster")))
            {
                MonsterBehaviour mB     = other.GetComponent <MonsterBehaviour>();
                float            damage = mySkill.skillData.qDamage[mySkill.TheChampionData.skill_Q - 1]
                                          + mySkill.Acalculate(mySkill.skillData.qAstat, mySkill.skillData.qAvalue);
                if (mB != null)
                {
                    trig = true;
                    //int viewID = mB.GetComponent<PhotonView>().viewID;
                    //mySkill.HitRPC(viewID, damage, "AP");
                    int x2 = 1;
                    //몬스터 오디오 처리하면 켤것
                    //ChampionSound.instance.PlayOtherFx(mB.GetComponentInChildren<AudioSource>(), ChampionSound.instance.Mundo_Q_Hit);
                    if (mB.HitMe(damage, "AP", mySkill.gameObject))
                    {
                        x2 = 2;
                        mySkill.TheChampionAtk.ResetTarget();

                        //// 스킬쏜애 주인이 나면 킬올리자
                        //if (mySkill.GetComponent<PhotonView>().owner.Equals(PhotonNetwork.player))
                        //{
                        //    mySkill.TheChampionData.Kill_CS_Gold_Exp(other.gameObject.name, 3, other.transform.position);

                        //}
                    }
                    mySkill.Heal(damage * x2);
                }
            }
            else if (other.tag.Equals("Minion"))
            {
                MinionBehavior mB = other.GetComponent <MinionBehavior>();
                if (!other.name.Contains(mySkill.TheChampionBehaviour.Team))
                {
                    trig = true;
                    float damage = mySkill.skillData.qDamage[mySkill.TheChampionData.skill_Q - 1]
                                   + mySkill.Acalculate(mySkill.skillData.qAstat, mySkill.skillData.qAvalue);
                    if (mB != null)
                    {
                        //int viewID = mB.GetComponent<PhotonView>().viewID;
                        //mySkill.HitRPC(viewID, damage, "AP");
                        ChampionSound.instance.PlayOtherFx(mB.Audio, ChampionSound.instance.Mundo_Q_Hit);
                        int x2 = 1;
                        if (mB.HitMe(damage, "AP", mySkill.gameObject))
                        {
                            x2 = 2;
                            mySkill.TheChampionAtk.ResetTarget();

                            // 스킬쏜애 주인이 나면 킬올리자
                            if (mySkill.GetComponent <PhotonView>().owner.Equals(PhotonNetwork.player))
                            {
                                mySkill.TheChampionData.Kill_CS_Gold_Exp(other.gameObject.name, 1, other.transform.position);
                            }
                        }
                        mySkill.Heal(damage * x2);
                    }
                }
            }

            if (trig)
            {
                gameObject.SetActive(false);
                firstAtk = false;
            }
        }
    }
Ejemplo n.º 19
0
    void Spawn_MinionSuper(Vector3 position, string color)
    {
        GameObject MinionSuper = Minion_ObjectPool.current.GetPooledSuper(color);

        if (MinionSuper == null)
        {
            return;
        }


        MinionBehavior Behav = MinionSuper.AddComponent <MinionBehavior>();

        if (position == RedTopSpawnPointV || position == RedMidSpawnPointV || position == RedBottomSpawnPointV)
        {
            MinionSuper.name = "Minion_Red_Super";
            //MinionSuper.GetComponentInChildren<Renderer>().material.mainTexture = red;
        }
        if (position == BlueTopSpawnPointV || position == BlueMidSpawnPointV || position == BlueBottomSpawnPointV)
        {
            MinionSuper.name = "Minion_Blue_Super";
        }



        if (MinionSuper.transform.name.Contains("Red"))
        {
            MinionSuper.layer = 14;
        }
        else if (MinionSuper.name.Contains("Blue"))
        {
            MinionSuper.layer = 15;
        }



        if (position == RedTopSpawnPointV)
        {
            MinionSuper.name = "Minion_Red_Top_Super";
            InitTarget(MinionSuper, TopNearRedPoint);
            SetRespownPosition(MinionSuper, RedTopRespownZone);
        }
        if (position == RedMidSpawnPointV)
        {
            MinionSuper.name = "Minion_Red_Mid_Super";
            InitTarget(MinionSuper, MidCenterPoint);
            SetRespownPosition(MinionSuper, RedMidRespownZone);
        }
        if (position == RedBottomSpawnPointV)
        {
            MinionSuper.name = "Minion_Red_Bot_Super";
            InitTarget(MinionSuper, BotNearRedPoint);
            SetRespownPosition(MinionSuper, RedBotRespownZone);
        }
        if (position == BlueTopSpawnPointV)
        {
            MinionSuper.name = "Minion_Blue_Top_Super";
            InitTarget(MinionSuper, TopNearBluePoint);
            SetRespownPosition(MinionSuper, BlueTopRespownZone);
        }
        if (position == BlueMidSpawnPointV)
        {
            MinionSuper.name = "Minion_Blue_Mid_Super";
            InitTarget(MinionSuper, MidCenterPoint);
            SetRespownPosition(MinionSuper, BlueMidRespownZone);
        }
        if (position == BlueBottomSpawnPointV)
        {
            MinionSuper.name = "Minion_Blue_Bot_Super";
            InitTarget(MinionSuper, BotNearBluePoint);
            SetRespownPosition(MinionSuper, BlueBotRespownZone);
        }
        InputWayPoint(MinionSuper);
        Behav.gridWayPoints = InputWayPoint(MinionSuper);

        MinionSuper.GetComponent <MinionBehavior>().minAtk.nowTarget = null;
        //MinionSuper.GetComponent<AIDestinationSetter>().target = null;
        //MinionSuper.GetComponent<MinionAtk>().MoveTarget = null;



        //if (gridTerm == 0)
        //    gridTerm = GridManager.instance.gridTerm;
        //int tempX = (int)(position.x / gridTerm), tempZ = (int)(position.z / gridTerm);
        //bool fin = false;
        //if (GridManager.instance.gridObjArray[tempZ * GridManager.instance.maxX + tempX] != null)
        //{
        //    for (int i = 1; i < 5 && !fin; ++i)
        //    {//범위. 처음은 자기 주변으로 9칸, 두번째는 자기 주변 25칸
        //        for (int j = -i; j <= i && !fin; ++j)
        //        {//z축
        //            for (int k = -i; k <= i && !fin; ++k)
        //            {//x축
        //                if (GridManager.instance.gridObjArray[(tempZ + j) * GridManager.instance.maxX + (tempX + k)] == null)
        //                {
        //                    fin = true;
        //                }
        //                else if (!GridManager.instance.gridObjArray[(tempZ + j) * GridManager.instance.maxX + (tempX + k)].activeInHierarchy)
        //                {
        //                    fin = true;
        //                }
        //                if (fin)
        //                {
        //                    Vector3 tempVec = position;
        //                    tempVec.x += gridTerm * k;
        //                    tempVec.z += gridTerm * j;
        //                    MinionSuper.transform.position = tempVec;
        //                }
        //            }
        //        }
        //    }
        //    if (!fin)
        //    {
        //        MinionSuper.transform.position = position;
        //    }
        //}
        //else
        //{
        //    MinionSuper.transform.position = position;
        //}


        MinionSuper.SetActive(true);
    }
Ejemplo n.º 20
0
    public void ApplyObject(GameObject go)
    {
        selectedObject = go;

        // 챔피언을 눌렀을때
        if (go.layer.Equals(LayerMask.NameToLayer("Champion")))
        {
            selectType           = SelectType.Player;
            selectedChampionData = go.GetComponent <ChampionData>();

            // 챔피언의 스탯을 가져와서 스탯업데이트
            stat       = selectedChampionData.totalStat;
            originStat = selectedChampionData.myStat;
            StatUpdate();

            // 챔피언의 아이콘을 가져와서 아이콘 업데이트
            icon.sprite = Resources.Load <Sprite>("Champion/ChampionIcon/" + selectedChampionData.championName);

            // 챔피언의 아이템을 가져와서 아이템 업데이트
            ItemUpdate();
        }

        else if (go.layer.Equals(LayerMask.NameToLayer("Monster")))
        {
            selectType = SelectType.Monster;
            selectedMonsterBehaviour = go.GetComponent <MonsterBehaviour>();
            stat = selectedMonsterBehaviour.stat;
            StatUpdate();
            string monsterName = go.name;
            icon.sprite = Resources.Load <Sprite>("Icon/Monster/" + monsterName.Split('(')[0]);
        }

        // 미니언을 눌렀을때
        else if (go.CompareTag("Minion"))
        {
            selectType = SelectType.Minion;
            selectedMinionBehaviour = go.GetComponent <MinionBehavior>();

            stat = selectedMinionBehaviour.stat;
            StatUpdate();

            if (selectedMinionBehaviour.name.Contains("Red"))
            {
                if (selectedMinionBehaviour.name.Contains("Magician"))
                {
                    icon.sprite = Resources.Load <Sprite>("Icon/Minion_caster_red");
                }
                else if (selectedMinionBehaviour.name.Contains("Melee"))
                {
                    icon.sprite = Resources.Load <Sprite>("Icon/Minion_melee_red");
                }
                else if (selectedMinionBehaviour.name.Contains("Siege"))
                {
                    icon.sprite = Resources.Load <Sprite>("Icon/Minion_siege_red");
                }
            }
            else if (selectedMinionBehaviour.name.Contains("Blue"))
            {
                if (selectedMinionBehaviour.name.Contains("Magician"))
                {
                    icon.sprite = Resources.Load <Sprite>("Icon/Minion_caster_blue");
                }
                else if (selectedMinionBehaviour.name.Contains("Melee"))
                {
                    icon.sprite = Resources.Load <Sprite>("Icon/Minion_melee_blue");
                }
                else if (selectedMinionBehaviour.name.Contains("Siege"))
                {
                    icon.sprite = Resources.Load <Sprite>("Icon/Minion_siege_blue");
                }
            }
            else
            {
                icon.sprite = null;
            }

            for (int i = 0; i < itemicon.Length; i++)
            {
                itemicon[i].gameObject.GetComponent <ItemInfo>().myItem = null;
                itemicon[i].sprite = null;
                itemicon[i].color  = new Color(14f / 255f, 26f / 255f, 23f / 255f, 1);
            }
        }

        // 타워를 눌렀을때
        else if (go.CompareTag("Tower"))
        {
            selectType             = SelectType.Tower;
            selectedTowerBehaviour = go.GetComponent <TowerBehaviour>();

            stat = selectedTowerBehaviour.towerstat;
            StatUpdate();

            if (selectedTowerBehaviour.Team.Equals("Red"))
            {
                icon.sprite = Resources.Load <Sprite>("Icon/Tower_Icon_Red");
            }
            else if (selectedTowerBehaviour.Team.Equals("Blue"))
            {
                icon.sprite = Resources.Load <Sprite>("Icon/Tower_Icon_Blue");
            }
            else
            {
                icon.sprite = null;
            }

            for (int i = 0; i < itemicon.Length; i++)
            {
                itemicon[i].gameObject.GetComponent <ItemInfo>().myItem = null;
                itemicon[i].sprite = null;
                itemicon[i].color  = new Color(14f / 255f, 26f / 255f, 23f / 255f, 1);
            }
        }
    }
Ejemplo n.º 21
0
    /// <summary>
    /// 공격을 담당하는 코루틴
    /// </summary>
    IEnumerator Attack()
    {
        while (true)
        {
            if (!isAtkPause)
            {
                bool isCheck = true;

                if (nowTarget == null)
                {
                    isCheck = false;
                }
                else if (!nowTarget.activeInHierarchy)
                {
                    isCheck = false;
                }

                //타겟이 있다면 공격
                if (isCheck)
                {
                    if (anim.GetBool("walking"))
                    {
                        anim.SetBool("walking", false);
                    }

                    anim.SetTrigger("attack");
                    Vector3 v = nowTarget.transform.position;
                    v.y = 0;
                    myMinion.transform.DOLookAt(v, 1);

                    //공격하는 대상과 피격당하는 대상을 구분하여 처리
                    if (nowTarget.tag.Equals("Minion"))
                    {
                        if (myMinion.name.Contains("Melee"))
                        {
                            MinionBehavior minBehav = nowTarget.GetComponent <MinionBehavior>();

                            if (minBehav != null)
                            {
                                int viewID = minBehav.GetComponent <PhotonView>().viewID;
                                myBehav.HitRPC(viewID);
                                minBehav.HitMe(myBehav.stat.AttackDamage);
                            }
                        }
                        else if (myMinion.name.Contains("Magician"))
                        {
                            float moveTime = 0.4f;
                            myBehav.ArrowRPC(nowTarget.transform.position, moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                        else if (myMinion.name.Contains("Siege"))
                        {
                            float moveTime = 0.4f;
                            myBehav.CannonballRPC(nowTarget.transform.position, moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                    }
                    else if (nowTarget.layer.Equals(LayerMask.NameToLayer("Champion")))
                    {
                        if (myMinion.name.Contains("Melee"))
                        {
                            ChampionBehavior champBehav = nowTarget.GetComponent <ChampionBehavior>();

                            if (champBehav != null)
                            {
                                int viewID = champBehav.GetComponent <PhotonView>().viewID;
                                myBehav.HitRPC(viewID);
                                champBehav.HitMe(myBehav.stat.AttackDamage, "AD", myMinion, myMinion.name);
                            }
                        }
                        else if (myMinion.name.Contains("Magician"))
                        {
                            float moveTime = 0.4f;
                            myBehav.ArrowRPC(nowTarget.transform.position, moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                        else if (myMinion.name.Contains("Siege"))
                        {
                            float moveTime = 0.4f;
                            myBehav.CannonballRPC(nowTarget.transform.position, moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                    }
                    else if (nowTarget.tag.Equals("Tower"))
                    {
                        if (myMinion.name.Contains("Melee"))
                        {
                            TowerBehaviour towerBehav = nowTarget.GetComponent <TowerBehaviour>();

                            if (towerBehav != null)
                            {
                                string key     = "";
                                char[] keyChar = towerBehav.gameObject.name.ToCharArray();

                                for (int i = 13; i < 16; ++i)
                                {
                                    key += keyChar[i];
                                }

                                myBehav.HitRPC(key);

                                if (towerBehav.HitMe(myBehav.stat.AttackDamage))
                                {
                                    if (enemyColor.Equals("Red"))
                                    {
                                        TheInGameManager.blueTeamPlayer[0].GetComponent <PhotonView>().RPC("GlobalGold", PhotonTargets.All, "blue", 100);
                                    }
                                    else
                                    {
                                        TheInGameManager.redTeamPlayer[0].GetComponent <PhotonView>().RPC("GlobalGold", PhotonTargets.All, "red", 100);
                                    }

                                    enemiesList.Remove(nowTarget);
                                }
                            }
                        }
                        else if (myMinion.name.Contains("Magician"))
                        {
                            float moveTime = 0.4f;
                            myBehav.ArrowRPC(nowTarget.transform.position, moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                        else if (myMinion.name.Contains("Siege"))
                        {
                            float moveTime = 0.4f;
                            myBehav.CannonballRPC(nowTarget.transform.position, moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                    }
                    else if (nowTarget.tag.Equals("Suppressor") || nowTarget.tag.Equals("Nexus"))
                    {
                        if (myMinion.name.Contains("Melee"))
                        {
                            SuppressorBehaviour supBehav = nowTarget.GetComponent <SuppressorBehaviour>();

                            if (supBehav != null)
                            {
                                string key     = "";
                                char[] keyChar = supBehav.gameObject.name.ToCharArray();

                                if (nowTarget.tag.Equals("Nexus"))
                                {
                                    key += keyChar[6];
                                }
                                else
                                {
                                    for (int i = 11; i < 14; ++i)
                                    {
                                        key += keyChar[i];
                                    }
                                }

                                myBehav.HitRPC(key);

                                if (supBehav.HitMe(myBehav.stat.AttackDamage))
                                {
                                    enemiesList.Remove(nowTarget);
                                }
                            }
                        }
                        else if (myMinion.name.Contains("Magician"))
                        {
                            float moveTime = 0.4f;
                            myBehav.ArrowRPC(nowTarget.transform.position, moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                        else if (myMinion.name.Contains("Siege"))
                        {
                            float moveTime = 0.4f;
                            myBehav.CannonballRPC(nowTarget.transform.position, moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                    }
                }
            }

            //어택 딜레이타임을 1초로 설정
            atkDelayTime = 1f;

            yield return(new WaitForSeconds(1));
        }
    }
Ejemplo n.º 22
0
    IEnumerator AtkMotion()
    {
        while (true)
        {
            if (!isAtkPause)
            {
                bool check = true;
                if (nowTarget == null)
                {
                    check = false;
                }
                else if (!nowTarget.activeInHierarchy)
                {
                    check = false;
                }

                if (check)
                {
                    if (Anim.GetBool("walking"))
                    {
                        Anim.SetBool("walking", false);
                    }
                    Anim.SetTrigger("attack");
                    myMinion.transform.DOLookAt(nowTarget.transform.position, 1);
                    if (nowTarget.tag.Equals("Minion"))
                    {
                        if (myMinion.name.Contains("Melee"))
                        {
                            MinionBehavior behav = nowTarget.GetComponent <MinionBehavior>();
                            if (behav != null)
                            {
                                if (behav.HitMe(myBehav.stat.Attack_Damage))
                                {
                                    enemiesList.Remove(nowTarget);
                                }
                            }
                        }
                        else if (myMinion.name.Contains("Magician"))
                        {
                            float      moveTime = 0.2f;
                            GameObject Arrow    = Minion_ObjectPool.current.GetPooledArrow();
                            Arrow.SetActive(true);
                            Arrow.transform.position = myMinion.transform.position;
                            Arrow.transform.LookAt(nowTarget.transform.position);
                            Arrow.transform.DOMove(nowTarget.transform.position, moveTime, true);
                            Arrow.GetComponent <TargetProjectile>().ActiveFalse(moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                        else if (myMinion.name.Contains("Siege"))
                        {
                            float      moveTime   = 0.2f;
                            GameObject Cannonball = Minion_ObjectPool.current.GetPooledCannonball();
                            Cannonball.SetActive(true);
                            Cannonball.transform.position = myMinion.transform.position + (nowTarget.transform.position - myMinion.transform.position).normalized * 2f;
                            Cannonball.transform.DOMove(nowTarget.transform.position, moveTime, true);
                            Cannonball.GetComponent <TargetProjectile>().ActiveFalse(moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                    }
                    else if (nowTarget.tag.Equals("Player"))
                    {
                        if (myMinion.name.Contains("Melee"))
                        {
                            ChampionBehavior behav = nowTarget.GetComponent <ChampionBehavior>();
                            if (behav != null)
                            {
                                if (behav.HitMe(myBehav.stat.Attack_Damage, "AD", gameObject))
                                {
                                    enemiesList.Remove(nowTarget);
                                }
                            }
                        }
                        else if (myMinion.name.Contains("Magician"))
                        {
                            float      moveTime = 0.2f;
                            GameObject Arrow    = Minion_ObjectPool.current.GetPooledArrow();
                            Arrow.SetActive(true);
                            Arrow.transform.position = myMinion.transform.position;
                            Arrow.transform.LookAt(nowTarget.transform.position);
                            Arrow.transform.DOMove(nowTarget.transform.position, moveTime, true);
                            Arrow.GetComponent <TargetProjectile>().ActiveFalse(moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                        else if (myMinion.name.Contains("Siege"))
                        {
                            float      moveTime   = 0.2f;
                            GameObject Cannonball = Minion_ObjectPool.current.GetPooledCannonball();
                            Cannonball.SetActive(true);
                            Cannonball.transform.position = myMinion.transform.position + (nowTarget.transform.position - myMinion.transform.position).normalized * 2f;
                            Cannonball.transform.DOMove(nowTarget.transform.position, moveTime, true);
                            Cannonball.GetComponent <TargetProjectile>().ActiveFalse(moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                    }
                    else if (nowTarget.tag.Equals("Tower"))
                    {
                        if (myMinion.name.Contains("Melee"))
                        {
                            TowerBehaviour behav = nowTarget.GetComponent <TowerBehaviour>();
                            if (behav != null)
                            {
                                if (behav.HitMe(myBehav.stat.Attack_Damage))
                                {
                                    enemiesList.Remove(nowTarget);
                                }
                            }
                        }
                        else if (myMinion.name.Contains("Magician"))
                        {
                            float      moveTime = 0.2f;
                            GameObject Arrow    = Minion_ObjectPool.current.GetPooledArrow();
                            Arrow.SetActive(true);
                            Arrow.transform.position = myMinion.transform.position;
                            Arrow.transform.LookAt(nowTarget.transform.position);
                            Arrow.transform.DOMove(nowTarget.transform.position, moveTime, true);
                            Arrow.GetComponent <TargetProjectile>().ActiveFalse(moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                        else if (myMinion.name.Contains("Siege"))
                        {
                            float      moveTime   = 0.2f;
                            GameObject Cannonball = Minion_ObjectPool.current.GetPooledCannonball();
                            Cannonball.SetActive(true);
                            Cannonball.transform.position = myMinion.transform.position + (nowTarget.transform.position - myMinion.transform.position).normalized * 2f;
                            Cannonball.transform.DOMove(nowTarget.transform.position, moveTime, true);
                            Cannonball.GetComponent <TargetProjectile>().ActiveFalse(moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                    }
                }
            }
            yield return(new WaitForSeconds(1));
        }



        //if (nowTarget != null)
        //{
        //    if (nowTarget.activeInHierarchy)
        //    {
        //        Anim.SetTrigger("attack");
        //        if (name.Contains("Melee"))
        //        {
        //            if (nowTarget.tag.Equals("Minion"))
        //            {
        //                MinionBehavior behav = nowTarget.GetComponent<MinionBehavior>();
        //                behav.stat.Hp -= myBehav.stat.Attack_Damage;
        //                print(behav.stat.Hp);
        //                if (behav.stat.Hp < 0)
        //                {
        //                    behav.stat.Hp = 0;
        //                    behav.IamDead();
        //                    enemiesList.Remove(nowTarget);
        //                    nowTarget = null;
        //                    TheAIPath.canMove = true;
        //                    TheAIPath.canSearch = true;
        //                    StopCoroutine(AtkMotion());
        //                    //적 사망 코드
        //                }
        //            }
        //        }
        //    }
        //    else
        //    {
        //        TheAIPath.canMove = true;
        //        TheAIPath.canSearch = true;
        //        StopCoroutine(AtkMotion());
        //    }
        //}
        //else
        //{
        //    TheAIPath.canMove = true;
        //    TheAIPath.canSearch = true;
        //    StopCoroutine(AtkMotion());
        //}
    }
Ejemplo n.º 23
0
 IEnumerator AtkMotion()
 {
     while (true)
     {
         if (!isAtkPause)
         {
             bool check = true;
             if (!isTargetting)
             {
                 check = false;
             }
             else if (AtkTargetObj == null)
             {
                 check = false;
             }
             else if (AtkTargetObj.Equals(AStarTargetObj))
             {
                 check = false;
             }
             if (check)
             {
                 myChampBehav.transform.DOLookAt(AtkTargetObj.transform.position, 0);
                 if (AtkTargetObj.tag.Equals("Minion"))
                 {
                     if (isAshe)
                     {
                         float moveTime = 0.4f;
                         myChampBehav.ArrowRPC(AtkTargetObj.transform.position, moveTime);
                     }
                     MinionBehavior behav    = AtkTargetObj.GetComponent <MinionBehavior>();
                     AudioSource    minAudio = behav.transform.GetChild(behav.transform.childCount - 1).GetComponent <AudioSource>();
                     if (behav != null)
                     {
                         int viewID = behav.GetComponent <PhotonView>().viewID;
                         myChampBehav.HitRPC(viewID);
                         ChampionSound.instance.IamAttackedSound(minAudio, champname);
                         if (isAshe)
                         {
                             asheSkill.qCountUp();
                         }
                         if (behav.HitMe(myChampionData.totalstat.Attack_Damage, "AD", myChampBehav.gameObject))
                         {
                             // 미니언쳤는데 죽었으면 cs, 골드 경험치 올려라
                             myChampionData.Kill_CS_Gold_Exp(AtkTargetObj.name, 1, AtkTargetObj.transform.position);
                             ResetTarget();
                         }
                         if (!skillKey.Equals(""))
                         {
                             if (--skillKeyNum < 1)
                             {
                                 skillKey = "";
                             }
                         }
                     }
                 }
                 //else if (AtkTargetObj.tag.Equals("Player"))
                 else if (AtkTargetObj.layer.Equals(LayerMask.NameToLayer("Champion")))
                 {//이 태그대로 할건지 바뀌는지는 모르겠음. 우선 챔피언 공격임.
                     if (isAshe)
                     {
                         float moveTime = 0.4f;
                         myChampBehav.ArrowRPC(AtkTargetObj.transform.position, moveTime);
                     }
                     ChampionBehavior behav      = AtkTargetObj.GetComponent <ChampionBehavior>();
                     AudioSource      champaudio = behav.gameObject.GetComponent <AudioSource>();
                     if (behav != null)
                     {
                         int viewID = behav.GetComponent <PhotonView>().viewID;
                         myChampBehav.HitRPC(viewID);
                         ChampionSound.instance.IamAttackedSound(champaudio, champname);
                         if (isAshe)
                         {
                             asheSkill.qCountUp();
                         }
                         if (behav.HitMe(myChampionData.totalstat.Attack_Damage, "AD", myChampBehav.gameObject, myChampBehav.name))
                         {
                             // 유저쳤는데 죽었으면 kill 골드 경험치 올려라
                             myChampionData.Kill_CS_Gold_Exp(AtkTargetObj.name, 0, AtkTargetObj.transform.position);
                             sysmsg.sendKillmsg(myChampionData.ChampionName, behav.GetComponent <ChampionData>().ChampionName, myChampBehav.Team);
                             ResetTarget();
                         }
                         if (!skillKey.Equals(""))
                         {
                             if (--skillKeyNum < 1)
                             {
                                 skillKey = "";
                             }
                         }
                     }
                 }
                 else if (AtkTargetObj.tag.Equals("Tower"))
                 {
                     if (isAshe)
                     {
                         float moveTime = 0.4f;
                         myChampBehav.ArrowRPC(AtkTargetObj.transform.position, moveTime);
                     }
                     TowerBehaviour behav      = AtkTargetObj.GetComponent <TowerBehaviour>();
                     AudioSource    towerAudio = behav.GetComponent <AudioSource>();
                     if (behav != null)
                     {
                         string key     = "";
                         char[] keyChar = behav.gameObject.name.ToCharArray();
                         for (int i = 13; i < 16; ++i)
                         {
                             key += keyChar[i];
                         }
                         myChampBehav.HitRPC(key);
                         ChampionSound.instance.IamAttackedSound(towerAudio, champname);
                         if (isAshe)
                         {
                             asheSkill.qCountUp();
                         }
                         if (behav.HitMe(myChampionData.totalstat.Attack_Damage))
                         {
                             // 타워쳤는데 죽으면 cs 골드 경험치 올려라
                             myChampionData.Kill_CS_Gold_Exp(AtkTargetObj.name, 2, AtkTargetObj.transform.position);
                             ResetTarget();
                         }
                         if (!skillKey.Equals(""))
                         {
                             if (--skillKeyNum < 1)
                             {
                                 skillKey = "";
                             }
                         }
                     }
                 }
                 else if (AtkTargetObj.tag.Equals("Suppressor"))
                 {
                     if (isAshe)
                     {
                         float moveTime = 0.4f;
                         myChampBehav.ArrowRPC(AtkTargetObj.transform.position, moveTime);
                     }
                     SuppressorBehaviour behav = AtkTargetObj.GetComponent <SuppressorBehaviour>();
                     if (behav != null)
                     {
                         string key     = "";
                         char[] keyChar = behav.gameObject.name.ToCharArray();
                         for (int i = 11; i < 14; ++i)
                         {
                             key += keyChar[i];
                         }
                         myChampBehav.HitRPC(key);
                         if (isAshe)
                         {
                             asheSkill.qCountUp();
                         }
                         if (behav.HitMe(myChampionData.totalstat.Attack_Damage))
                         {
                             // 억제기쳤는데 죽으면 cs 골드 경험치 올려라
                             myChampionData.Kill_CS_Gold_Exp(AtkTargetObj.name, 2, AtkTargetObj.transform.position);
                             ResetTarget();
                         }
                         if (!skillKey.Equals(""))
                         {
                             if (--skillKeyNum < 1)
                             {
                                 skillKey = "";
                             }
                         }
                     }
                 }
                 else if (AtkTargetObj.tag.Equals("Nexus"))
                 {
                     if (isAshe)
                     {
                         float moveTime = 0.4f;
                         myChampBehav.ArrowRPC(AtkTargetObj.transform.position, moveTime);
                     }
                     SuppressorBehaviour behav = AtkTargetObj.GetComponent <SuppressorBehaviour>();
                     if (behav != null)
                     {
                         string key     = "";
                         char[] keyChar = behav.gameObject.name.ToCharArray();
                         key += keyChar[6];
                         myChampBehav.HitRPC(key);
                         if (isAshe)
                         {
                             asheSkill.qCountUp();
                         }
                         if (behav.HitMe(myChampionData.totalstat.Attack_Damage))
                         {
                             ResetTarget();
                         }
                         if (!skillKey.Equals(""))
                         {
                             if (--skillKeyNum < 1)
                             {
                                 skillKey = "";
                             }
                         }
                     }
                 }
                 else if (AtkTargetObj.layer.Equals(LayerMask.NameToLayer("Monster")))
                 {
                     if (isAshe)
                     {
                         float moveTime = 0.4f;
                         myChampBehav.ArrowRPC(AtkTargetObj.transform.position, moveTime);
                     }
                     MonsterBehaviour behav = AtkTargetObj.GetComponent <MonsterBehaviour>();
                     if (behav != null)
                     {
                         int viewID = behav.GetComponent <PhotonView>().viewID;
                         myChampBehav.HitRPC(viewID);
                         if (isAshe)
                         {
                             asheSkill.qCountUp();
                         }
                         if (behav.HitMe(myChampionData.totalstat.Attack_Damage, "AD", myChamp))
                         {
                             // 죽었으면 cs올려라
                             //myChampionData.Kill_CS_Gold_Exp(AtkTargetObj.name, 3, AtkTargetObj.transform.position);
                             ResetTarget();
                         }
                         if (!skillKey.Equals(""))
                         {
                             if (--skillKeyNum < 1)
                             {
                                 skillKey = "";
                             }
                         }
                     }
                 }
             }
         }
         float AS = myChampionData.mystat.Attack_Speed * (1 + (myChampionData.totalstat.UP_AttackSpeed * (myChampionData.totalstat.Level - 1) + (myChampionData.totalstat.Attack_Speed - myChampionData.mystat.Attack_Speed)) / 100);
         atkDelayTime = 1f / AS;
         yield return(new WaitForSeconds(atkDelayTime));
     }
 }
Ejemplo n.º 24
0
    private void Update()
    {
        damageTime -= Time.deltaTime;

        // 0.5초마다 반경 내의 적에게 데미지를 준다
        if (damageTime <= 0)
        {
            damageTime = 0.5f;

            for (int i = 0; i < enemyList.Count; ++i)
            {
                if (enemyList[i].Equals(mySkill.gameObject))
                {
                    continue;
                }

                float damage = mySkill.skillData.wDamage[mySkill.TheChampionData.skill_W - 1]
                               + mySkill.Acalculate(mySkill.skillData.wAstat, mySkill.skillData.wAvalue, true);

                // 현재 충돌한 적에 따라 각각의 HitMe 함수를 호출한다
                if (enemyList[i].layer.Equals(LayerMask.NameToLayer("Champion")))
                {
                    ChampionBehavior champBehav = enemyList[i].GetComponent <ChampionBehavior>();

                    if (champBehav.team != mySkill.TheChampionBehaviour.team)
                    {
                        if (champBehav != null)
                        {
                            champBehav.HitMe(damage, "AP", mySkill.gameObject, mySkill.name);

                            if (champBehav.myChampionData.totalStat.Hp <= 0)
                            {
                                enemyDeleteStack.Push(enemyList[i]);
                            }
                        }
                    }
                }
                else if (enemyList[i].layer.Equals(LayerMask.NameToLayer("Monster")))
                {
                    MonsterBehaviour monBehav = enemyList[i].GetComponent <MonsterBehaviour>();

                    if (monBehav != null)
                    {
                        if (monBehav.HitMe(damage, "AP", mySkill.gameObject))
                        {
                            mySkill.TheChampionAtk.ResetTarget();
                            enemyDeleteStack.Push(enemyList[i]);
                        }

                        if (monBehav.stat.Hp <= 0)
                        {
                            enemyDeleteStack.Push(enemyList[i]);
                        }
                    }
                }
                else if (enemyList[i].tag.Equals("Minion"))
                {
                    MinionBehavior minBehav = enemyList[i].GetComponent <MinionBehavior>();

                    if (!enemyList[i].name.Contains(mySkill.TheChampionBehaviour.team))
                    {
                        if (minBehav != null)
                        {
                            minBehav.HitMe(damage, "AP", mySkill.gameObject);

                            if (minBehav.stat.Hp <= 0)
                            {
                                enemyDeleteStack.Push(enemyList[i]);
                            }
                        }
                    }
                }

                // 죽은 적은 데미지를 입히는 대상에서 제외시킨다
                while (enemyDeleteStack.Count > 0)
                {
                    GameObject deletingEnemyObj = enemyDeleteStack.Pop();

                    if (enemyList.Contains(deletingEnemyObj))
                    {
                        enemyList.Remove(deletingEnemyObj);
                    }
                }
            }
        }
    }
Ejemplo n.º 25
0
    public override void W()
    {
        InitTempValue();
        OnMove();
        HitEffectRPC("Alistar", "W");
        GameObject obj = SkillObj["W"][0];

        if (obj.activeInHierarchy)
        {
            Pooling(QSkillprefab, "W", 10);
            obj = SkillObj["W"][0];
        }
        SkillObj["W"].RemoveAt(0);
        SkillObj["W"].Add(obj);
        obj.transform.position = transform.position;
        obj.SetActive(true);
        if (TempObject1.tag.Equals("Minion"))
        {
            MinionBehavior mB = TempObject1.GetComponent <MinionBehavior>();
            if (!TempObject1.gameObject.name.Contains(TheChampionBehaviour.Team))
            {
                MinionAtk mA = mB.minAtk;
                //mA.PushMe(Vector3.up * 3 + TempObject1.transform.position
                //    + (((TempObject1.transform.position - TempVector1).normalized) * 5), 0.5f);
                Vector3 direction = (TempObject1.transform.position - TempVector1).normalized;
                Vector3 v         = TempObject1.transform.position
                                    + (direction * 10);;
                RaycastHit hit;
                if (Physics.Raycast(mA.transform.position, direction, out hit, 12, 1 << LayerMask.NameToLayer("WallCollider")))
                {
                    float dis = Vector3.Distance(hit.point, TempObject1.transform.position);
                    v = TempObject1.transform.position
                        + (direction * (dis - 1f));
                }

                v.y = 0;
                mA.PushMe(v, 0.5f);
                mA.PauseAtk(1f, true);
                float damage = skillData.wDamage[TheChampionData.skill_W - 1]
                               + Acalculate(skillData.wAstat, skillData.wAvalue);

                if (mB != null)
                {
                    int viewID = mB.GetComponent <PhotonView>().viewID;
                    HitRPC(viewID, damage, "AP", "Push");
                    if (mB.HitMe(damage, "AP", gameObject))
                    {
                        //여기에는 나중에 평타 만들면 플레이어의 현재 공격 타겟이 죽었을 시 초기화해주는 것을 넣자.
                        TheChampionAtk.ResetTarget();

                        // 스킬쏜애 주인이 나면 킬올리자
                        if (GetComponent <PhotonView>().owner.Equals(PhotonNetwork.player))
                        {
                            TheChampionData.Kill_CS_Gold_Exp(TempObject1.gameObject.name, 1, TempObject1.transform.position);
                        }
                    }
                }
            }
        }
        //else if (TempObject1.tag.Equals("Player"))
        else if (TempObject1.layer.Equals(LayerMask.NameToLayer("Champion")))
        {
            ChampionBehavior cB = TempObject1.GetComponent <ChampionBehavior>();
            if (cB.Team != TheChampionBehaviour.Team)
            {
                ChampionAtk cA        = cB.myChampAtk;
                Vector3     direction = (TempObject1.transform.position - TempVector1).normalized;
                Vector3     v         = TempObject1.transform.position
                                        + (direction * 5);;
                RaycastHit hit;
                if (Physics.Raycast(cA.transform.position, direction, out hit, 6, 1 << LayerMask.NameToLayer("WallCollider")))
                {
                    float dis = Vector3.Distance(hit.point, TempObject1.transform.position);
                    v = TempObject1.transform.position
                        + (direction * (dis - 1f));
                }

                v.y = 0.5f;
                cA.PushMe(v, 0.5f);
                cA.PauseAtk(1f, true);
                float damage = skillData.wDamage[TheChampionData.skill_W - 1]
                               + Acalculate(skillData.wAstat, skillData.wAvalue);

                if (cB != null)
                {
                    int viewID = cB.GetComponent <PhotonView>().viewID;
                    HitRPC(viewID, damage, "AP", "Push");
                    if (cB.HitMe(damage, "AP", gameObject, gameObject.name))
                    {
                        TheChampionAtk.ResetTarget();
                        if (!sysmsg)
                        {
                            sysmsg = GameObject.FindGameObjectWithTag("SystemMsg").GetComponent <SystemMessage>();
                        }
                        //sysmsg.sendKillmsg("alistar", TempObject1.GetComponent<ChampionData>().ChampionName, TheChampionBehaviour.Team.ToString());
                        // 스킬쏜애 주인이 나면 킬올리자
                        //if (GetComponent<PhotonView>().owner.Equals(PhotonNetwork.player))
                        //{

                        //    TheChampionData.Kill_CS_Gold_Exp(TempObject1.gameObject.name, 0, TempObject1.transform.position);
                        //}
                    }
                }
            }
        }
        else if (TempObject1.layer.Equals(LayerMask.NameToLayer("Monster")))
        {
            MonsterBehaviour mB        = TempObject1.GetComponent <MonsterBehaviour>();
            MonsterAtk       mA        = mB.monAtk;
            Vector3          direction = (TempObject1.transform.position - TempVector1).normalized;
            Vector3          v         = TempObject1.transform.position
                                         + (direction * 5);;
            RaycastHit hit;
            if (Physics.Raycast(mA.transform.position, direction, out hit, 6, 1 << LayerMask.NameToLayer("WallCollider")))
            {
                float dis = Vector3.Distance(hit.point, TempObject1.transform.position);
                v = TempObject1.transform.position
                    + (direction * (dis - 1f));
            }

            v.y = 0;
            mA.PushMe(v, 0.5f);
            mA.PauseAtk(1f, true);
            float damage = skillData.wDamage[TheChampionData.skill_W - 1]
                           + Acalculate(skillData.wAstat, skillData.wAvalue);

            if (mB != null)
            {
                int viewID = mB.GetComponent <PhotonView>().viewID;
                HitRPC(viewID, damage, "AP", "Push");
                if (mB.HitMe(damage, "AP", gameObject))
                {
                    TheChampionAtk.ResetTarget();

                    //// 스킬쏜애 주인이 나면 킬올리자
                    //if (GetComponent<PhotonView>().owner.Equals(PhotonNetwork.player))
                    //{
                    //    TheChampionData.Kill_CS_Gold_Exp(TempObject1.gameObject.name, 3, TempObject1.transform.position);
                    //}
                }
            }
        }
        skillselect = SSelect.none;
    }
Ejemplo n.º 26
0
    private void OnTriggerEnter(Collider other)
    {
        if (other.tag.Equals("Minion"))
        {
            MinionBehavior mB = other.GetComponent <MinionBehavior>();
            if (!other.gameObject.name.Contains(mySkill.TheChampionBehaviour.Team))
            {
                float damage = (mySkill.skillData.eDamage[mySkill.TheChampionData.skill_E - 1]
                                + mySkill.Acalculate(mySkill.skillData.eAstat, mySkill.skillData.eAvalue)) / 10f;
                if (mB != null)
                {
                    int viewID = mB.GetComponent <PhotonView>().viewID;
                    //mySkill.HitRPC(viewID, damage, "AP");
                    if (mB.HitMe(damage, "AP", 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);
                        }
                    }
                }
            }
        }
        //else if(other.tag.Equals("Player"))
        else if (other.gameObject.layer.Equals(LayerMask.NameToLayer("Champion")))
        {
            ChampionBehavior cB = other.GetComponent <ChampionBehavior>();
            if (cB.Team != mySkill.TheChampionBehaviour.Team)
            {
                float damage = (mySkill.skillData.eDamage[mySkill.TheChampionData.skill_E - 1]
                                + mySkill.Acalculate(mySkill.skillData.eAstat, mySkill.skillData.eAvalue)) / 10f;
                if (cB != null)
                {
                    int viewID = cB.GetComponent <PhotonView>().viewID;
                    //mySkill.HitRPC(viewID, damage, "AP");
                    if (cB.HitMe(damage, "AP", mySkill.gameObject, mySkill.name))
                    {
                        mySkill.TheChampionAtk.ResetTarget();
                        if (!sysmsg)
                        {
                            sysmsg = GameObject.FindGameObjectWithTag("SystemMsg").GetComponent <SystemMessage>();
                        }
                        sysmsg.sendKillmsg("alistar", 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.eDamage[mySkill.TheChampionData.skill_E - 1]
                            + mySkill.Acalculate(mySkill.skillData.eAstat, mySkill.skillData.eAvalue)) / 10f;
            if (mB != null)
            {
                int viewID = mB.GetComponent <PhotonView>().viewID;
                //mySkill.HitRPC(viewID, damage, "AP");
                if (mB.HitMe(damage, "AP", 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);
                    //}
                }
            }
        }
    }
Ejemplo n.º 27
0
    private void OnTriggerEnter(Collider other)
    {
        // 다른 챔피언과 충돌한 적 있는지 검사
        if (isFirstAtk)
        {
            bool isTrig = false;

            // 현재 충돌한 적에 따라 각각의 HitMe 함수를 호출하고 체력을 회복한다
            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 = CalculateDamage();

                    if (champBehav != null)
                    {
                        int x2 = 1;
                        ChampionSound.instance.PlayOtherFx(champBehav.GetComponentInChildren <AudioSource>(), ChampionSound.instance.Mundo_Q_Hit);
                        champBehav.HitMe(damage, "AP", mySkill.gameObject, mySkill.name);
                        mySkill.activeMundoQEffect(champBehav.transform.position);
                        mySkill.Heal(damage * x2);
                    }
                }
            }
            else if (other.gameObject.layer.Equals(LayerMask.NameToLayer("Monster")))
            {
                MonsterBehaviour monBehav = other.GetComponent <MonsterBehaviour>();
                float            damage   = CalculateDamage();

                if (monBehav != null)
                {
                    isTrig = true;
                    int x2 = 1;

                    if (monBehav.HitMe(damage, "AP", mySkill.gameObject))
                    {
                        x2 = 2;
                        mySkill.TheChampionAtk.ResetTarget();
                    }

                    mySkill.Heal(damage * x2);
                }
            }
            else if (other.tag.Equals("Minion"))
            {
                MinionBehavior minBehav = other.GetComponent <MinionBehavior>();

                if (!other.name.Contains(mySkill.TheChampionBehaviour.team))
                {
                    isTrig = true;
                    float damage = CalculateDamage();

                    if (minBehav != null)
                    {
                        ChampionSound.instance.PlayOtherFx(minBehav.audio, ChampionSound.instance.Mundo_Q_Hit);
                        int x2 = 1;
                        minBehav.HitMe(damage, "AP", mySkill.gameObject);
                        mySkill.activeMundoQEffect(minBehav.transform.position);
                        mySkill.Heal(damage * x2);
                    }
                }
            }

            // 피격당한 게 확인되면 isFirstAtk을 꺼 다른 이에게 충돌할 일이 없도록 처리한다.
            if (isTrig)
            {
                gameObject.SetActive(false);
                isFirstAtk = false;
            }
        }
    }
Ejemplo n.º 28
0
    private void OnTriggerEnter(Collider other)
    {
        // 다른 챔피언과 충돌한 적 있는지 검사
        if (isFirstAtk)
        {
            bool isTrig = false;

            // 현재 충돌한 적에 따라 각각의 HitMe 함수를 호출한다
            if (other.gameObject.layer.Equals(LayerMask.NameToLayer("Champion")))
            {
                if (!other.gameObject.Equals(mySkill.gameObject))
                {
                    ChampionBehavior champBehav = other.GetComponent <ChampionBehavior>();

                    if (champBehav.team != mySkill.TheChampionBehaviour.team)
                    {
                        isTrig = true;
                        float damage = CalculateDamage();

                        if (champBehav != null)
                        {
                            champBehav.HitMe(damage, "AD", mySkill.gameObject, mySkill.name);
                        }
                    }
                }
            }
            else if (other.gameObject.layer.Equals(LayerMask.NameToLayer("Monster")))
            {
                MonsterBehaviour monBehav = other.GetComponent <MonsterBehaviour>();
                float            damage   = CalculateDamage();

                if (monBehav != null)
                {
                    isTrig = true;

                    if (monBehav.HitMe(damage, "AD", mySkill.gameObject))
                    {
                        mySkill.TheChampionAtk.ResetTarget();
                    }
                }
            }
            else if (other.tag.Equals("Minion"))
            {
                MinionBehavior minBehav = other.GetComponent <MinionBehavior>();

                if (!other.name.Contains(mySkill.TheChampionBehaviour.team))
                {
                    isTrig = true;
                    float damage = CalculateDamage();

                    if (minBehav != null)
                    {
                        minBehav.HitMe(damage, "AD", mySkill.gameObject);
                    }
                }
            }

            // 피격당한 게 확인되면 isFirstAtk을 꺼 다른 이에게 충돌할 일이 없도록 처리한다.
            if (isTrig)
            {
                gameObject.SetActive(false);
                isFirstAtk = false;
            }
        }
    }
Ejemplo n.º 29
0
    void Spawn_MinionSuper(Vector3 position, string color)
    {
        GameObject MinionSuper = Minion_ObjectPool.current.GetPooledSuper(color);

        if (MinionSuper == null)
        {
            return;
        }


        MinionBehavior Behav = MinionSuper.GetComponent <MinionBehavior>();

        KillManager.photonMinionList.Add(Behav);
        Behav.key = ++key;
        if (position == RedTopSpawnPointV || position == RedMidSpawnPointV || position == RedBottomSpawnPointV)
        {
            MinionSuper.name = "Minion_Red_Super";
        }
        if (position == BlueTopSpawnPointV || position == BlueMidSpawnPointV || position == BlueBottomSpawnPointV)
        {
            MinionSuper.name = "Minion_Blue_Super";
        }

        if (position == RedTopSpawnPointV)
        {
            MinionSuper.name = "Minion_Red_Top_Super";
            InitTarget(MinionSuper, TopNearRedPoint);
            SetRespownPosition(MinionSuper, RedTopRespownZone);
        }
        if (position == RedMidSpawnPointV)
        {
            MinionSuper.name = "Minion_Red_Mid_Super";
            InitTarget(MinionSuper, MidCenterPoint);
            SetRespownPosition(MinionSuper, RedMidRespownZone);
        }
        if (position == RedBottomSpawnPointV)
        {
            MinionSuper.name = "Minion_Red_Bot_Super";
            InitTarget(MinionSuper, BotNearRedPoint);
            SetRespownPosition(MinionSuper, RedBotRespownZone);
        }
        if (position == BlueTopSpawnPointV)
        {
            MinionSuper.name = "Minion_Blue_Top_Super";
            InitTarget(MinionSuper, TopNearBluePoint);
            SetRespownPosition(MinionSuper, BlueTopRespownZone);
        }
        if (position == BlueMidSpawnPointV)
        {
            MinionSuper.name = "Minion_Blue_Mid_Super";
            InitTarget(MinionSuper, MidCenterPoint);
            SetRespownPosition(MinionSuper, BlueMidRespownZone);
        }
        if (position == BlueBottomSpawnPointV)
        {
            MinionSuper.name = "Minion_Blue_Bot_Super";
            InitTarget(MinionSuper, BotNearBluePoint);
            SetRespownPosition(MinionSuper, BlueBotRespownZone);
        }
        InputWayPoint(MinionSuper);
        Behav.gridWayPoints = InputWayPoint(MinionSuper);

        MinionSuper.GetComponent <MinionBehavior>().minAtk.nowTarget = null;

        audiosource.PlayOneShot(SoundManager.instance.Minion_SpawnSound);
        MinionSuper.SetActive(true);
    }
Ejemplo n.º 30
0
    IEnumerator AtkMotion()
    {
        while (true)
        {
            if (!isAtkPause)
            {
                bool check = true;
                if (nowTarget == null)
                {
                    check = false;
                }
                else if (!nowTarget.activeInHierarchy)
                {
                    check = false;
                }

                if (check)
                {
                    if (Anim.GetBool("walking"))
                    {
                        Anim.SetBool("walking", false);
                    }
                    Anim.SetTrigger("attack");
                    Vector3 v = nowTarget.transform.position;
                    v.y = 0;
                    myMinion.transform.DOLookAt(v, 1);
                    if (nowTarget.tag.Equals("Minion"))
                    {
                        if (myMinion.name.Contains("Melee"))
                        {
                            MinionBehavior behav = nowTarget.GetComponent <MinionBehavior>();

                            if (behav != null)
                            {
                                int viewID = behav.GetComponent <PhotonView>().viewID;
                                myBehav.HitRPC(viewID);
                                if (behav.HitMe(myBehav.stat.Attack_Damage))
                                {
                                    enemiesList.Remove(nowTarget);
                                }
                            }
                        }
                        else if (myMinion.name.Contains("Magician"))
                        {
                            float moveTime = 0.4f;
                            myBehav.ArrowRPC(nowTarget.transform.position, moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                        else if (myMinion.name.Contains("Siege"))
                        {
                            float moveTime = 0.4f;
                            myBehav.CannonballRPC(nowTarget.transform.position, moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                    }
                    else if (nowTarget.layer.Equals(LayerMask.NameToLayer("Champion")))
                    {
                        if (myMinion.name.Contains("Melee"))
                        {
                            ChampionBehavior behav = nowTarget.GetComponent <ChampionBehavior>();

                            if (behav != null)
                            {
                                int viewID = behav.GetComponent <PhotonView>().viewID;
                                myBehav.HitRPC(viewID);
                                if (behav.HitMe(myBehav.stat.Attack_Damage, "AD", myMinion, myMinion.name))
                                {
                                    sysmsg.sendKillmsg("minion", behav.GetComponent <ChampionData>().ChampionName, myBehav.team.ToString());
                                    enemiesList.Remove(nowTarget);
                                }
                            }
                        }
                        else if (myMinion.name.Contains("Magician"))
                        {
                            float moveTime = 0.4f;
                            myBehav.ArrowRPC(nowTarget.transform.position, moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                        else if (myMinion.name.Contains("Siege"))
                        {
                            float moveTime = 0.4f;
                            myBehav.CannonballRPC(nowTarget.transform.position, moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                    }
                    else if (nowTarget.tag.Equals("Tower"))
                    {
                        if (myMinion.name.Contains("Melee"))
                        {
                            TowerBehaviour behav = nowTarget.GetComponent <TowerBehaviour>();

                            if (behav != null)
                            {
                                string key     = "";
                                char[] keyChar = behav.gameObject.name.ToCharArray();
                                for (int i = 13; i < 16; ++i)
                                {
                                    key += keyChar[i];
                                }
                                myBehav.HitRPC(key);
                                if (behav.HitMe(myBehav.stat.Attack_Damage))
                                {
                                    if (enemyColor.Equals("Red"))
                                    {
                                        inGameManager.blueTeamPlayer[0].GetComponent <PhotonView>().RPC("GlobalGold", PhotonTargets.All, "blue", 100);
                                    }
                                    else
                                    {
                                        inGameManager.redTeamPlayer[0].GetComponent <PhotonView>().RPC("GlobalGold", PhotonTargets.All, "red", 100);
                                    }
                                    enemiesList.Remove(nowTarget);
                                }
                            }
                        }
                        else if (myMinion.name.Contains("Magician"))
                        {
                            float moveTime = 0.4f;
                            myBehav.ArrowRPC(nowTarget.transform.position, moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                        else if (myMinion.name.Contains("Siege"))
                        {
                            float moveTime = 0.4f;
                            myBehav.CannonballRPC(nowTarget.transform.position, moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                    }
                    else if (nowTarget.tag.Equals("Suppressor") || nowTarget.tag.Equals("Nexus"))
                    {
                        if (myMinion.name.Contains("Melee"))
                        {
                            SuppressorBehaviour behav = nowTarget.GetComponent <SuppressorBehaviour>();

                            if (behav != null)
                            {
                                string key     = "";
                                char[] keyChar = behav.gameObject.name.ToCharArray();
                                if (nowTarget.tag.Equals("Nexus"))
                                {
                                    key += keyChar[6];
                                }
                                else
                                {
                                    for (int i = 11; i < 14; ++i)
                                    {
                                        key += keyChar[i];
                                    }
                                }
                                myBehav.HitRPC(key);
                                if (behav.HitMe(myBehav.stat.Attack_Damage))
                                {
                                    enemiesList.Remove(nowTarget);
                                }
                            }
                        }
                        else if (myMinion.name.Contains("Magician"))
                        {
                            float moveTime = 0.4f;
                            myBehav.ArrowRPC(nowTarget.transform.position, moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                        else if (myMinion.name.Contains("Siege"))
                        {
                            float moveTime = 0.4f;
                            myBehav.CannonballRPC(nowTarget.transform.position, moveTime);
                            Invoke("ProjectileAtk", moveTime);
                        }
                    }
                }
            }
            atkDelayTime = 1f;
            yield return(new WaitForSeconds(1));
        }
    }