Beispiel #1
0
    private void DartMachineGun()
    {
        for (int i = 0; i <= _numOfCasts; i++)
        {
            float Xpos = Mathf.Cos(_calcAngle * Mathf.Deg2Rad) * _bossCollisionDetectDistance;
            float Zpos = Mathf.Sin(_calcAngle * Mathf.Deg2Rad) * _bossCollisionDetectDistance;

            Vector3 RayDir = (transform.forward * Zpos) + (transform.right * Xpos);

            if (_debug)
            {
                Debug.DrawLine(transform.position + (Vector3.up * _vertDetectOffset), transform.position + (Vector3.up * _vertDetectOffset) + (RayDir * _bossCollisionDetectDistance), Color.red);
            }

            if (Physics.Raycast(transform.position + Vector3.up, RayDir, out hitObj, _bossCollisionDetectDistance))
            {
                GameObject hitObject = hitObj.collider.gameObject;

                if (hitObject == currentTrap)
                {
                    DartTrap possessedTrap = hitObject.GetComponent <DartTrap>();

                    possessedTrap.BecomePossessed(this, _realDartPossessTime, _realDartFireDelay, _realDartSpawnDelay, _realDartShooterMoveSpeed, _DartXMin, _DartXMax, _DartZMin, _DartZMax);

                    trapComplete = false;

                    _MyAttack = TRAPSTRATS.INSIDETRAP;
                }
            }
        }
        _calcAngle = _startAngle;
    }
    public void OnDartTrapConstruct()
    {
        bool hasMonies = true;

        if (hasMonies)
        {
            // Prepare
            Renderer rend = currentTrap.GetComponent <Renderer>();
            Vector3  pos  = new Vector3(currentTrap.transform.position.x, currentTrap.transform.position.y / 2, currentTrap.transform.position.z);

            // Instantiate
            GameObject go = Instantiate(dartTrapPrefab, pos, currentTrap.transform.rotation) as GameObject;
            DartTrap   dt = go.GetComponent <DartTrap>();
            dt.trapPlaceholder = currentTrap;
            dt.cc = this;

            // Hide Placeholder
            //rend.enabled = false;
            currentTrap.SetActive(false);
            OnTrapConstructClose();
        }
        else
        {
            trapConstructError.text = "Not enough credits to construct dart trap.";
        }
    }
    public void OnDartTrapModifySell()
    {
        // @todo: addCredits to Base stats
        Debug.Log("some coins added");

        DartTrap dt = currentTrap.GetComponent <DartTrap>();

        dt.trapPlaceholder.SetActive(true);
        Destroy(currentTrap);
        OnDartTrapModifyClose();
    }
    public void OnDartTrapModifyUpgrade()
    {
        bool hasMonies = false;

        if (hasMonies)
        {
            // @todo: remove coins
            Debug.Log("some coins removed");
            DartTrap dt = currentTrap.GetComponent <DartTrap>();
            dt.dps += dartTrapDpsUpgrade;
            OnDartTrapModifyClose();
        }
        else
        {
            trapModifyError.text = "Not enough credits to upgrade attack of this trap.";
        }
    }