Exemplo n.º 1
0
    public override bool TakeDamage(float damage, Vector3 hitPoint)
    {
        if (IsDead)
        {
            return(false);
        }
        CurrentHp -= damage;

        if (m_CurrentHp <= 0)
        {
            m_BobyCollider.enabled   = false;
            m_DamageCollider.enabled = false;
            StartCoroutine(Displacement(hitPoint, 0.2f));

            m_GODeadBlood    = ObjectPool.m_Instance.LoadGameObjectFromPool(3004);
            m_DeadBloodSpurt = m_GODeadBlood.GetComponent <BloodSpurt>();
            m_DeadBloodSpurt.Init(m_AIData, this.transform.position + Vector3.up);
            m_SoundManager.PlayInWorld(3904, this.transform.position, 0.5f);
            Death();
        }
        else
        {
            m_GOHurtBlood    = ObjectPool.m_Instance.LoadGameObjectFromPool(3003);
            m_HurtBloodSpurt = m_GOHurtBlood.GetComponent <BloodSpurt>();
            m_HurtBloodSpurt.Init(m_AIData, hitPoint);
            PerformGetHurt(hitPoint);
        }
        return(true);
    }
Exemplo n.º 2
0
    private void OnEnable()
    {
        m_SoundManager = this.GetComponent <SoundManager>();
        SoundDataSetting Soundsetting = ResourceManager.m_Instance.LoadData(typeof(SoundDataSetting), "Sounds/Mobs/Fish", "SoundDataSetting") as SoundDataSetting;

        m_SoundManager.SetAudioClips(Soundsetting.SoundDatas);
        MobManager.m_Instance.OnDestroyAll += Death;
        if (m_FSM == null)
        {
            return;
        }
        m_AIData.m_Go            = this.gameObject;
        m_bDead                  = false;
        m_CurrentHp              = m_MaxHp;
        m_BodyCollider.enabled   = true;
        m_DamageCollider.enabled = true;
        m_GODeadBlood            = null;
        m_GOHurtBlood            = null;
        m_DeadBloodSpurt         = null;
        m_HurtBloodSpurt         = null;
        m_FSM.PerformTransition(eFSMTransition.Go_Respawn);
        if (OnSpawn != null)
        {
            OnSpawn();
        }
    }
Exemplo n.º 3
0
    private IEnumerator TakeHit(Vector2 direction)
    {
        health -= 1;
        if (health == 0)
        {
            dead = true;
        }

        rb.velocity = Vector2.zero;

        yield return(new WaitForNote(Note.Eighth));

        var bloodObject = Instantiate(bloodPrefab, transform);

        bloodSpurtVfx = bloodObject.GetComponent <BloodSpurt>();
        bloodSpurtVfx.Run(direction);

        if (dead)
        {
            StartCoroutine(Die());
        }
        else
        {
            StartCoroutine(Stumble());
        }
    }
Exemplo n.º 4
0
 public void ReturnToPool(BloodSpurt bSpurt)
 {
     _bloodPool.Add(bSpurt);
 }