void ResetLastHitBlock()
 {
     if (_lastBlockHit != null)
     {
         _lastBlockHit.ResetBlock();
         _lastBlockHit = null;
     }
 }
Esempio n. 2
0
 private void Awake()
 {
     //comboGameObject = GameObject.FindGameObjectWithTag("Combo");
     playerball        = GameObject.FindWithTag("PlayerBall");
     comboText         = comboGameObject.GetComponent <TextMeshProUGUI>();
     bouncedBlock      = GetComponent <DestructableBlock>();
     cachedComboWindow = comboWindow;
     cachedComboTarget = ComboTarget;
 }
    void TryDig()
    {
        RaycastHit hitInfo;

        if (Physics.Raycast(playerCamera.position, playerCamera.forward, out hitInfo, digRange, digMask))
        {
            DestructableBlock db = hitInfo.transform.GetComponent <DestructableBlock>();
            if (db != null)
            {
                _lastHit = hitInfo;
                // Same block
                if (db == _lastBlockHit)
                {
                    _lastDigTime = Time.time;
                    _lastBlockHit.DamageBlock(digDamage * Time.deltaTime);
                    SendMessage("OnDigHit", hitInfo, SendMessageOptions.DontRequireReceiver);
                }
                // Different block
                else
                {
                    ResetLastHitBlock();

                    _lastDigTime  = Time.time;
                    _lastBlockHit = db;
                    _lastBlockHit.DamageBlock(digDamage * Time.deltaTime);
                    SendMessage("OnDigHit", hitInfo, SendMessageOptions.DontRequireReceiver);
                }
            }
            // No block
            else
            {
                ResetLastHitBlock();
                SendMessage("OnDigMiss", SendMessageOptions.DontRequireReceiver);
            }
        }
    }