Beispiel #1
0
        void DoHook()
        {
            anim.SetTrigger("hook");
            state = E_HeroHookState.Hooking;

            Ray     ray         = Camera.main.ScreenPointToRay(screenCenterPoint);
            Vector3 hookDestPos = ray.origin + ray.direction * maxShotLength;

            hookDestPos = ShotCtrl.GetFirstHitAsMapOrEnemy(this, ray, maxShotLength).point;

            hookOriginPos.transform.LookAt(hookDestPos);
            photonView.RPC("ActivateHook", RpcTarget.All, hookOriginPos.transform.rotation);
        }
Beispiel #2
0
        private void OnTriggerEnter(Collider other)
        {
            if (!attachingHero.photonView.IsMine)
            {
                return;
            }

            if (!(
                    (other.gameObject.layer == Constants.mapLayerMask && !other.gameObject.CompareTag(LayerMask.LayerToName(attachingHero.gameObject.layer))) ||
                    TeamInfo.GetInstance().IsThisLayerEnemy(other.gameObject.layer)))
            {
                return;
            }


            Vector3 collCenter = coll.bounds.center;                                                                      //콜라이더의 센터를 폭발 지점으로.

            attachingHero.photonView.RPC("BoomUltMissile", Photon.Pun.RpcTarget.All, attachedNumber, transform.position); //효과만.

            List <Hero> enemyHeroes = TeamInfo.GetInstance().EnemyHeroes;

            for (int i = 0; i < enemyHeroes.Count; i++)
            {
                Vector3 enemyPosition = enemyHeroes[i].CenterPos - collCenter;
                if (enemyPosition.sqrMagnitude < explosionRangeSqr)
                {
                    float dis = enemyPosition.magnitude;

                    if (ShotCtrl.MapIntersectedCheck(attachingHero, collCenter, enemyHeroes[i].CenterPos))
                    {
                        MyDebug.Log("HSUltMissile::OnTriggerEnter- " + enemyHeroes[i].photonView.ViewID + "는 솔져 미사일 폭발 속에서, 중간에 벽이 있어서 피해를 받지 않음");
                        continue;
                    }
                    Vector3 dir = enemyPosition.normalized;

                    dir *= ((explosionRange - dis) * knockBackPowerInterValue); //폭발 지점과 거리 계산해서 알맞게 넉백 파워를 조절해줌.

                    MyDebug.Log("HSUltMissile::OnTriggerEnter- " + enemyHeroes[i].photonView.ViewID + "솔져 미사일 피격. 넉백 = " + dir + "피해량=" + amount * (explosionRange - dis) * explosionRangeDiv);

                    enemyHeroes[i].photonView.RPC("Knock", Photon.Pun.RpcTarget.All, dir);
                    enemyHeroes[i].photonView.RPC("GetDamaged", Photon.Pun.RpcTarget.All, amount * (explosionRange - dis) * explosionRangeDiv, attachingHero.photonView.ViewID);
                }
            }
        }