Пример #1
0
        void UpdateSerchingDieActor()
        {
            if (m_TargetActor.ISDie)
            {
                int        layermaskval  = CalcManager.GetActorCampTypeTOLayerMask(m_TargetActor);
                Collider[] colliderarray = Physics.OverlapSphere(this.transform.position
                                                                 , AttackRange.SphereRadius + 10f
                                                                 , layermaskval);


                m_TargetActor = null;
                float minlength = float.MaxValue;
                foreach (var item in colliderarray)
                {
                    BaseActor tempactor = item.GetComponent <BaseActor>();

                    if (tempactor != null)
                    {
                        float val = (tempactor.transform.position - this.transform.position).magnitude;
                        if (minlength > val)
                        {
                            m_TargetActor = tempactor;
                        }
                    }
                }
            }
        }
        public BaseActor AddPlayerActor(int p_index, E_Camp p_camp = E_Camp.MyCamp)
        {
            if (!ActorTableData.GetI.ISGetActortableData(p_index))
            {
                Debug.LogErrorFormat("생성 할수 없음  : {0}", p_index);
                return(null);
            }


            BaseActor cloneactor = GameObject.Instantiate <BaseActor>(CloneActorData);

            cloneactor.ActorTableID = p_index;
            cloneactor.InitSettingData(p_index, p_camp);

            cloneactor.gameObject.SetActive(true);

            if (p_camp == E_Camp.MyCamp)
            {
                cloneactor.transform.SetParent(PlayerActorSpawn);
            }
            else if (p_camp == E_Camp.EnemyCamp)
            {
                cloneactor.transform.SetParent(EnemyActorSpawn);
            }
            else
            {
                Debug.LogErrorFormat(" 진영이 없습니다. ");
            }

            cloneactor.transform.localPosition = new Vector3(0f, 0f, 0f);

            return(cloneactor);
        }
        public RangeAttackObject AddRangeAttackObject(BaseActor p_target, BaseActor p_attacker, AttackData p_attackdata)
        {
            RangeAttackObject attackobj = GameObject.Instantiate <RangeAttackObject>(CloneAttackObject);

            attackobj.Initlize(p_target, p_attacker, p_attackdata);

            return(attackobj);
        }
Пример #4
0
        public void InitCollisionDetating(BaseActor p_linkactor, Action <BaseActor> p_callfn)
        {
            m_LinkActor = p_linkactor;
            m_CallFN    = p_callfn;

            SphereRadius = GetComponent <SphereCollider>().radius;

            m_ISInit = true;
        }
        public static int GetActorCampTypeTOLayerMask(BaseActor p_actor)
        {
            if (p_actor.MyCamp == E_Camp.Max)
            {
                Debug.LogErrorFormat("캠프타입이 이상함 2 : {0}, {1}", p_actor.name, p_actor.MyCamp);
                return(0);
            }

            return(LayerMask.GetMask(p_actor.MyCamp.ToString()));;
        }
Пример #6
0
        void AttackCollistionEnter(BaseActor p_actor)
        {
            Debug.LogFormat("공격범위 녀석 : {0}, {1}", this.name
                            , p_actor.name);

            if (m_TargetActor == null)
            {
                m_TargetActor = p_actor;
            }
        }
Пример #7
0
        private void OnTriggerEnter(Collider p_other)
        {
            if (!m_ISInit)
            {
                return;
            }

            BaseActor otheractor = p_other.GetComponent <BaseActor>();

            if (otheractor != null &&
                otheractor.MyCamp != m_LinkActor.MyCamp)
            {
                m_CallFN(otheractor);
            }
        }
Пример #8
0
        public void SetDamage(BaseActor p_attacker, float p_attackval)
        {
            if (p_attacker.ISDie)
            {
                //
            }

            m_ActorData.HP = (int)((float)m_ActorData.HP - p_attackval);


            if (m_ActorData.HP <= 0)
            {
                m_ActorData.HP = 0;
                this.gameObject.SetActive(false);
            }
        }
Пример #9
0
        public void Attack1(E_AniCallType p_calltype)
        {
            AttackData attackdata = AttackDataArray[0];

            if (attackdata.AttackRangeType == E_AttackRangeType.Meel)
            {
                if (attackdata.AttackMutiType == E_AttackMultiType.Single)
                {
                    float attackval = m_ActorData.Attack + attackdata.AddAttackVal;
                    m_TargetActor.SetDamage(this, attackval);
                }
                else if (attackdata.AttackMutiType == E_AttackMultiType.Multi)
                {
                    float attackval = m_ActorData.Attack + attackdata.AddAttackVal;
                    m_TargetActor.SetDamage(this, attackval);


                    int        layermaskval  = CalcManager.GetActorCampTypeTOLayerMask(m_TargetActor);
                    Collider[] colliderarray = Physics.OverlapSphere(m_TargetActor.transform.position
                                                                     , attackdata.MultiAttackRangeVal
                                                                     , layermaskval);

                    attackval = attackval * attackdata.MultiAttackRangeDiv;
                    foreach (var item in colliderarray)
                    {
                        BaseActor tempactor = item.GetComponent <BaseActor>();
                        if (tempactor)
                        {
                            tempactor.SetDamage(this, attackval);
                        }
                    }
                }
            }
            else if (attackdata.AttackRangeType == E_AttackRangeType.Range)
            {
                // 피사체 던지기
                InGameBattleManager.GetI.AddRangeAttackObject(m_TargetActor, this, attackdata);
            }


            UpdateSerchingDieActor();
        }
        public static int GetCampTypeTOLayerIndex(BaseActor p_actor)
        {
            switch (p_actor.MyCamp)
            {
            case E_Camp.MyCamp:
                return(LayerMask.NameToLayer(p_actor.MyCamp.ToString()));

                break;

            case E_Camp.EnemyCamp:
                return(LayerMask.NameToLayer(p_actor.MyCamp.ToString()));

                break;

            default:
                Debug.LogErrorFormat("캠프타입이 이상함 : {0}, {1}", p_actor.name, p_actor.MyCamp);
                break;
            }

            return(0);
        }
Пример #11
0
        public void Initlize(BaseActor p_targetActor, BaseActor p_attacker, AttackData p_attackdata)
        {
            if (m_LinkSprite == null)
            {
                m_LinkSprite = GetComponent <SpriteRenderer>();
            }

            m_LinkAttackData = p_attackdata;
            m_TargetActor    = p_targetActor;
            m_AttackerActor  = p_attacker;

            m_MoveSpeed         = m_LinkAttackData.RangeSpeedSec;
            m_LinkSprite.sprite = m_LinkAttackData.RangeSprite;

            if (m_LinkAttackData.RangeSpeedSec >= float.MaxValue - 100)
            {
                SetAttack();
            }
            m_ISInit = true;

            transform.position = p_attacker.transform.position;
        }
        public static float Damageval(BaseActor p_actor, BaseActor p_targetactor)
        {
            float outdamageval = 1f;

            return(outdamageval);
        }
Пример #13
0
 void SerchingCollsionEnter(BaseActor p_actor)
 {
     Debug.LogFormat("서칭 범위 녀석 : {0}, {1}", this.name
                     , p_actor.name);
 }