Пример #1
0
    //............................................................
    //............................................... * TRIGGERS *

    private void OnTriggerEnter(Collider colliderBox)
    {
        GameObject colliderObject;

        colliderObject = colliderBox.gameObject;

        BalloonedShark sharkObject;

        sharkObject = colliderObject.GetComponent <BalloonedShark>();

        BalloonedChest treasureChestObject;

        treasureChestObject = colliderObject.GetComponent <BalloonedChest>();

        if (sharkObject != null)
        {
            if (m_FiringCooldownTimer <= 0)
            {
                m_IsFiring = true;

                m_Cannon.m_PlayerControlsAreActive = false;
                m_Cannon.FireCannon();

                //make prefab particle fx smoke

                GameObject confettiParticleFX;
                confettiParticleFX = Instantiate(confettiPrefab);
                confettiParticleFX.transform.position = new Vector3(sharkObject.transform.position.x, sharkObject.transform.position.y + m_SpawnPosition, sharkObject.transform.position.z);


                sharkObject.m_IsGoingUp = false;
                sharkObject.m_HangTimer = sharkObject.m_HangDur;

                m_FiringCooldownTimer = m_FiringCooldownDur;
            }
        }

        if (treasureChestObject != null)
        {
            if (m_FiringCooldownTimer <= 0)
            {
                m_IsFiring = true;

                m_Cannon.m_PlayerControlsAreActive = false;
                m_Cannon.FireCannon();

                //CannonFireAndSmoke();

                GameObject confettiParticleFX;
                confettiParticleFX = Instantiate(confettiPrefab);
                confettiParticleFX.transform.position = new Vector3(treasureChestObject.transform.position.x, treasureChestObject.transform.position.y + m_SpawnPosition, treasureChestObject.transform.position.z);

                BundleOfCoins coinBundleObject;
                coinBundleObject = Instantiate(m_CoinBundlePrefab) as BundleOfCoins;
                coinBundleObject.transform.position = new Vector3(treasureChestObject.transform.position.x, treasureChestObject.transform.position.y + m_SpawnPosition, treasureChestObject.transform.position.z);

                treasureChestObject.m_IsGoingUp = false;
                treasureChestObject.m_HangTimer = treasureChestObject.m_HangDur;

                m_FiringCooldownTimer = m_FiringCooldownDur;
            }
        }
    }
    //............................................................
    //................................................. * UPDATE *
    void Update()
    {
        // RAYCAST
        m_LineRenderer.SetPosition(0, rayOriginCannonBarrel.transform.position);
        m_LineRenderer.SetPosition(1, rayOriginCannonBarrel.transform.position + m_CannonFireRange * transform.forward);

        GameObject a_HitObject;

        a_HitObject = null;

        //so the load bar is barely infront of the reticle frame
        float m_ReticleLoadBarRange = m_ReticleRange + 0.001f;

        Ray a_Ray = new Ray();

        a_Ray.origin    = rayOriginCannonBarrel.transform.position;
        a_Ray.direction = transform.forward;

        RaycastHit a_RayCastaHit;

        if (Physics.Raycast(a_Ray, out a_RayCastaHit, m_CannonFireRange))
        {
            m_LineRenderer.SetPosition(1, a_RayCastaHit.point);
            a_HitObject = a_RayCastaHit.transform.gameObject;
            m_ReticleFrame.SetActive(true);
            m_ReticleFrame.transform.position = (a_Ray.origin + a_Ray.direction + m_ReticleRange * transform.forward);
        }
        else
        {
            m_ReticleFrame.SetActive(true);
            m_ReticleFrame.transform.position = (a_Ray.origin + a_Ray.direction + m_ReticleRange * transform.forward);
            m_IsReadyingFire = false;
            m_Reticle.SetActive(false);
        }


        if (a_HitObject != null)
        {
            BalloonedObject balloonedTargets;
            balloonedTargets = a_HitObject.GetComponent <BalloonedObject>();

            if (balloonedTargets != null)
            {
                m_Reticle.SetActive(true);
                m_Reticle.transform.position = (a_Ray.origin + a_Ray.direction + m_ReticleLoadBarRange * transform.forward);

                m_IsReadyingFire = true;
            }
            else
            {
                m_IsReadyingFire = false;
                m_Reticle.SetActive(false);
            }
        }

        if (m_IsFiring == true)
        {
            m_Cannon.FireCannon();
            m_IsReadyingFire = false;
            m_IsFiring       = false;
        }
    }