Beispiel #1
0
    private void fire(PiranhaFire currentPiranhaFire)
    {
        Vector3 dirFire = Vector3.zero;
        // get FirePivot position
        Vector3 firePos = currentPiranhaFire.transform.FindChild("FirePivot").position;

        if (currentPiranhaFire.quad == 00)
        {
            dirFire = fireDirs[0];
        }
        else if (currentPiranhaFire.quad == 01)
        {
            dirFire = fireDirs[1];
        }
        else if (currentPiranhaFire.quad == 11)
        {
            dirFire = fireDirs[2];
        }
        else if (currentPiranhaFire.quad == 10)
        {
            dirFire = fireDirs[3];
        }

        GameObject newGO = GameObject.Instantiate(fireBall, firePos, Quaternion.identity) as GameObject;

        // deactivae it so it doesn't interact with current game object creator
#if UNITY_4_AND_LATER
        newGO.SetActive(false);
#else
        newGO.active = false;
#endif
        FireBall fireball = newGO.GetComponent <FireBall>();
        fireball.setDestroyTime(destroyTime);
        fireball.setBouncing(false);
        fireball.setDir(dirFire);
        fireball.setSpeed(firePow);
        fireball.addTargetLayer(LayerMask.NameToLayer(Layers.PLAYER));
        newGO.transform.parent = null;
#if UNITY_4_AND_LATER
        newGO.SetActive(true);
#else
        newGO.active = true;
#endif
    }
Beispiel #2
0
    // Update is called once per frame
    void Update()
    {
        if (timingFire > 0)
        {
            timingFire -= Time.deltaTime;
        }

        // avoid fire if Mario is aout of range or is inside safe zone
        if (rangeFiredetector.getTarget() == null || piranhaSafeZone.isInside())
        {
            piranhaAnim.enabled = true;
        }

        // get current piranha fire
        if (piranhaLookAnim.getCurrentPiranhaFire() == null)
        {
            return;
        }

        // check if this doesn't match the active piranha fire
        PiranhaFire current = piranhaLookAnim.getCurrentPiranhaFire().GetComponent <PiranhaFire>();

        if (current.quad != quad)
        {
            return;
        }

        // only fires when target is in radio of fire, piranha is idle and totally out of tube, and target isn't in dead zone
        if ((rangeFiredetector.getTarget() != null) && piranhaAnim.isOut() && !piranhaSafeZone.isInside())
        {
            // disable piranha anim so it stays out of the tube for firing
            piranhaAnim.enabled = false;
            // controls the rate of fire
            if (timingFire <= 0f)
            {
                fire(current);
                timingFire = rateOfFire;
            }
        }
    }