Beispiel #1
0
    //< 모델 삭제
    void ModelDestroy()
    {
        if (ModelObj == null)
        {
            MyDestroy();
            return;
        }

        if (!bNetInit)
        {
            return;
        }

        //< 업데이트를 막기위함
        bNetInit = false;

        //< 이펙트가 출력되고있을수도 있기때문에 잠시후에 삭제시켜줌
        ModelObj.gameObject.SetActive(false);
        TempCoroutine.instance.FrameDelay(2, () =>
        {
            if (ModelObj != null)
            {
                FxMakerPoolItem poolItem = ModelObj.transform.GetComponent <FxMakerPoolItem>();
                if (null == poolItem)
                {
                    SelfDespawn.DespawnPartileSystem("Projectile", ModelObj.transform, 0.1f, true);
                }
                else if (null != poolItem)
                {
                    poolItem.ManualDespawn();
                }

                ModelObj = null;
            }

            //< 나도 삭제
            MyDestroy();
        });
    }
Beispiel #2
0
    public void SetEffect(bool type)
    {
        //< 이펙트를 켜준다.
        if (type)
        {
            string prefabName = buffInfo.effect;
            if (prefabName != null && prefabName != "" && prefabName != "0" && Target.Usable && Effgo == null)
            {
                Target.SpawnEffect(prefabName, 1, Target.transform, Target.transform, false, (eff) =>
                {
                    if (eff != null && Live && Target != null && !Target.IsDie)
                    {
                        Effgo = eff;

                        //< 타입이 스턴이라면 머리위로 보정
                        //if(buffInfo.buffType == (byte)BuffType.Stun)
                        if (buffInfo.startType == 1)
                        {
                            Collider _Collider = Target.gameObject.GetComponent <Collider>();
                            if (_Collider != null)
                            {
                                Effgo.transform.position = new Vector3(
                                    Target.transform.position.x,
                                    _Collider.bounds.max.y + 0.5f,
                                    Target.transform.position.z);
                            }
                        }
                        else if (buffInfo.startType == 2)
                        {
                            Collider _Collider = Target.gameObject.GetComponent <Collider>();
                            if (_Collider != null)
                            {
                                Effgo.transform.position = new Vector3(
                                    Target.transform.position.x,
                                    Target.transform.position.y + _Collider.bounds.max.y / 2f,
                                    Target.transform.position.z);
                            }
                        }
                    }
                    else
                    {
                        Effgo = eff;
                        SetEffect(false);
                    }
                });
            }
        }
        //< 이펙트를 꺼준다
        else if (!type)
        {
            if (Effgo != null)
            {
                FxMakerPoolItem poolItem = Effgo.GetComponent <FxMakerPoolItem>();
                if (poolItem == null)
                {
                    poolItem             = Effgo.gameObject.AddComponent <FxMakerPoolItem>();
                    poolItem.Owner       = Caster;
                    poolItem.destroyTime = 1;
                }
                else
                {
                    poolItem.ManualDespawn();
                }
            }
        }
    }