Ejemplo n.º 1
0
    /**
     * Base function for VFX
     * name: the name of the effect in resources/effects
     * position: where it spawns
     * delay: how long until it plays
     * emitter: name of the other effect when it dies
     */
    public GameObject PlayEffect(string name, Vector3 position, float delay, string emitter, float duration)
    {
        GameObject inta    = Resources.Load <GameObject>("Effects/" + name);
        GameObject effect  = Instantiate(inta, position, inta.transform.rotation);
        Transform  tEffect = effect.transform;
        VFXScript  vfx     = effect.GetComponent <VFXScript>();

        if (vfx != null && delay > 0)
        {
            vfx.delay = delay;
        }
        if (vfx != null && duration != 0)
        {
            vfx.duration = duration;
        }

        GameObject emit = Resources.Load <GameObject>("Effects/" + emitter);

        if (emit != null)
        {
            vfx.SetEmitter(emit);
        }

        return(effect);
    }
Ejemplo n.º 2
0
    private void Awake()
    {
        photonView = gameObject.GetComponent <PhotonView>();

        vfxScript = gameObject.GetComponent <VFXScript>();

        photonView.RPC("Reset", RpcTarget.All);
    }
Ejemplo n.º 3
0
    private void Update()
    {
        hunger += Time.deltaTime;

        if (isRunning)
        {
            if (!isVFXUsed)
            {
                isVFXUsed = true;
                vfx       = VFXManager.Instance.GetStateVFX(transform.position, ai, VFXType.HUNGER);
            }

            if (target != null)
            {
                _animationManager.SetState(AnimationType.Walk);
                ai.Move(target.position);
                if (Vector3.Distance(target.position, transform.position) < targetRange)
                {
                    if (target.tag == "Chicken")
                    {
                        AnimalAI targetAi = target.GetComponent <AnimalAI>();
                        // vfx = VFXManager.Instance.GetDeadVFX(transform.position, targetAi, VFXType.EATDEAD);
                        // VFXManager.Instance.WaitPush(vfx, VFXType.EATDEAD);
                        target.GetComponent <AnimalAI>().OnCaseChanged(new CaseChangedEventArgs(null, Case.DEATH));
                    }

                    hunger    = 0;
                    isRunning = false;
                    alerted   = false;
                    target    = null;

                    isVFXUsed = false;
                    VFXManager.Instance.Push(vfx, VFXType.HUNGER);

                    ai.OnCaseChanged(new CaseChangedEventArgs(null, Case.IDLE));
                }
            }
            else
            {
                isRunning = false;
                ai.OnCaseChanged(new CaseChangedEventArgs(null, Case.IDLE));
            }
        }

        if (!alerted && hunger > hungerTreshold)
        {
            alerted = true;
            ai.OnCaseChanged(new CaseChangedEventArgs(null, Case.AVAILABLE));
        }

        if (hunger > deathTreshold)
        {
            // vfx = VFXManager.Instance.GetDeadVFX(transform.position, ai, VFXType.HUNGERDEAD);
            // VFXManager.Instance.WaitPush(vfx, VFXType.HUNGERDEAD);
            ai.OnCaseChanged(new CaseChangedEventArgs(null, Case.DEATH));
        }
    }
Ejemplo n.º 4
0
    private void Awake()
    {
        UpdateSpeed();

        shotCount = 0;

        vfxScript = gameObject.GetComponent <VFXScript>();

        vfxScript.Reset();
    }
    public void SpawnVFXAt(string prefabName, Vector3 location)
    {
        GameObject spawnInstance = Instantiate(Resources.Load <GameObject>("Art/VFX/" + prefabName), location, Quaternion.identity);

        VFXList.Add(spawnInstance);
        if (VFXList[VFXList.Count - 1].GetComponent <VFXScript>() != null)
        {
            VFXScript VFXScriptInstance = VFXList[VFXList.Count - 1].GetComponent <VFXScript>();
            VFXScriptInstance.SetIndex(VFXList.Count - 1);
        }
    }
    public void SpawnVFX(string prefabName)
    {
        GameObject spawnInstance = Instantiate(Resources.Load <GameObject>("Art/VFX/" + prefabName));

        VFXList.Add(spawnInstance);
        if (VFXList[VFXList.Count - 1].GetComponent <VFXScript>() != null)
        {
            VFXScript VFXScriptInstance = VFXList[VFXList.Count - 1].GetComponent <VFXScript>();
            VFXScriptInstance.SetIndex(VFXList.Count - 1);
        }
    }
Ejemplo n.º 7
0
    // Update is called once per frame
    void Update()
    {
        if (!canReproduce)
        {
            return;
        }

        reproductionUrge += Time.deltaTime;
        if (isRunning && target != null)
        {
            if (!isVFXUsed)
            {
                isVFXUsed = true;
                vfx       = VFXManager.Instance.GetStateVFX(transform.position, ai, VFXType.LOVE);
            }
            _animationManager.SetState(AnimationType.Walk);
            ai.Move(target.transform.position);
            if (Vector3.Distance(target.transform.position, transform.position) < targetRange)
            {
                reproductionUrge = 0;
                isRunning        = false;
                alerted          = false;

                // ÖNEMLİ NOT : DİREK HAMİLELİĞE GEÇİLDİĞİNDEN HAMİLELİĞİ BİRAZDA IDLE SÜRESİ EKLENMELİ!
                if (sex == Sex.FEMALE)
                {
                    ai.OnCaseChanged(new CaseChangedEventArgs(new PregnancyCaseData(target.Identity.GeneticCode), Case.PREGNANCY));
                }
                else
                {
                    ai.OnCaseChanged(new CaseChangedEventArgs(new IdleCaseData(10f), Case.IDLE));
                }

                target    = null;
                isVFXUsed = false;
                VFXManager.Instance.Push(vfx, VFXType.LOVE);
            }
        }

        if (!alerted && reproductionUrge > reproductionTreshold)
        {
            alerted = true;
            ai.OnCaseChanged(new CaseChangedEventArgs(null, Case.AVAILABLE));
        }
    }
Ejemplo n.º 8
0
    /**
     * Base function for VFX
     * name: the name of the effect in resources/effects
     * position: where it spawns
     * delay: how long until it plays
     * emitter: name of the other effect when it dies
     */
    public void PlayEffect(string name, Vector3 position, float delay, string emitter)
    {
        GameObject effect = Instantiate(Resources.Load <GameObject>("Effects/" + name), position, Quaternion.identity);

        VFXScript vfx = effect.GetComponent <VFXScript>();

        if (vfx != null && delay > 0)
        {
            vfx.delay = delay;
        }

        GameObject emit = Resources.Load <GameObject>("Effects/" + emitter);

        if (emit != null)
        {
            vfx.SetEmitter(emit);
        }
    }
Ejemplo n.º 9
0
    private void Update()
    {
        thirst += Time.deltaTime;

        if (isRunning)
        {
            if (!isVFXUsed)
            {
                isVFXUsed = true;
                vfx       = VFXManager.Instance.GetStateVFX(transform.position, ai, VFXType.THIRST);
            }

            if (target != null && Vector3.Distance(target.position, thisTransform.position) < targetRange)
            {
                thirst    = 0;
                isRunning = false;
                alerted   = false;
                target    = null;

                isVFXUsed = false;
                VFXManager.Instance.Push(vfx, VFXType.THIRST);

                ai.OnCaseChanged(new CaseChangedEventArgs(null, Case.IDLE));
            }
        }

        if (!alerted && thirst > thirstTreshold)
        {
            alerted = true;
            ai.OnCaseChanged(new CaseChangedEventArgs(null, Case.AVAILABLE));
        }

        if (thirst > deathTreshold)
        {
            // vfx = VFXManager.Instance.GetDeadVFX(transform.position, ai, VFXType.THIRSTDEAD);
            // VFXManager.Instance.WaitPush(vfx, VFXType.THIRSTDEAD);
            ai.OnCaseChanged(new CaseChangedEventArgs(null, Case.DEATH));
        }
    }
Ejemplo n.º 10
0
    private void Awake()
    {
        vfxScript = gameObject.GetComponent <VFXScript>();

        vfxScript.Reset();
    }