void Update()
    {
        timer += Time.deltaTime;

        if (fireBoltShot == true)
        {
            distance = fireBoltTrans.position - transform.position;
            if (distance.magnitude >= spellRange)
            {
                ResetFireBolt();
            }
        }
        else if (fireBoltShot == false && fireBoltPS [1].isEmitting == true)
        {
            fireBoltTrans.position = collisionPoint;
        }
        else if (fireBoltShot == false && fireBoltPS [1].isEmitting == false)
        {
            ResetFireBolt();
        }

        // Check if the player has pressed the fire button and if enough time has elapsed since they last fired
        if (Input.GetButton("Fire1") && timer > fireRate && !ShootFireBall.isCasting && playerMana.currentMana >= manaCost)
        {
            fireBoltTrans.position = transform.position;
            playerMana.ReduceMana(manaCost);
            fireBoltShot = true;
            timer        = 0;

            Vector3 rayOrigin = fpsCam.ViewportToWorldPoint(new Vector3(0.5f, 0.5f, 0.0f));

            if (Physics.Raycast(rayOrigin, fpsCam.transform.forward, out hit, 25))
            {
                targetVector = hit.point - transform.position;
            }
            else
            {
                targetVector = fpsCam.transform.position + fpsCam.transform.forward * spellRange - transform.position;
            }

            targetVector.Normalize();
            fireBoltTrans.forward = targetVector;

            psRend.maxParticleSize   = 0.5f;
            lightSource.enabled      = true;
            fireBoltCollider.enabled = true;
            fireBoltAudio[0].Play();
            fireBoltAudio [1].Stop();
            fireBoltPS [0].Play();
            fireBoltPS [1].Stop();

            fireBoltRigid.velocity = targetVector * fireBoltSpeed;
            //Instantiate (fireBoltObject, Spells);
        }
    }
    IEnumerator FireballCast(float time)
    {
        yield return(new WaitForSeconds(time));

        mana.ReduceMana(manaCost);
        StartCoroutine(FireballCooldown(fireballCooldown));
        ImageFiller.Instance.image.fillAmount = 1;
        ImageFiller.Instance.SetCooldown(fireballCooldown);
        Instantiate(fireballPrefab, transform.position, Quaternion.identity);
        TopDownMovementScript.Instance.isAllowedToMove = true;
    }
    public void ShootFS()
    {
        flameStrikeShot = true;
        playerMana.ReduceMana(manaCost);
        isCasting = false;
        progressBar.SetActive(false);
        timer            = 0;
        StartingPosition = flameStrikeTrans.position;

        lightSource.enabled    = true;
        playerMovement.enabled = true;
        playerMovement.state   = 0;
        orbControl.enabled     = true;
        flameStrike.Play();

        StartCoroutine(PlayPS(1.0f, 0.5f));
    }
예제 #4
0
    public void ShootFB()
    {
        playerMana.ReduceMana(manaCost);
        fireBallShot = true;
        isCasting    = false;
        progressBar.SetActive(false);
        timer = 0;

        targetVector = fpsCam.transform.position + fpsCam.transform.forward * spellRange - transform.position;
        targetVector.Normalize();
        fireBallTrans.forward = targetVector;

        lightSource.enabled      = true;
        fireBallCollider.enabled = true;
        playerMovement.enabled   = true;
        playerMovement.state     = 0;
        orbControl.enabled       = true;
        fireBallPS.Play();

        fireBallRigid.velocity = targetVector * fireBallSpeed;
    }