예제 #1
0
    // Update is called once per frame
    void Update()
    {
        // cast from gun to ground
        if (Physics.Raycast(transform.position, transform.TransformDirection(Vector3.forward), out hit, 15, layerMask))
        {
            // if player decides to shoot freeze ray some prework must be done to change texture of ground
            if (Input.GetButton("Fire1"))
            {
                // turn particle effect on
                emission.enabled = true;

                if (!iceAudio.isPlaying)
                {
                    iceAudio.Play();
                }

                if (hit.collider.tag == "MovingPlat")
                {
                    platform = hit.transform.gameObject.GetComponent <MovingPlatform> ();

                    if (!platform.iced)
                    {
                        platform.Icy();
                    }
                }
                else if (hit.collider.tag == "SolarPanel")
                {
                    freezePanel = hit.transform.gameObject.GetComponent <FreezePanel> ();

                    if (!freezePanel.frozen)
                    {
                        freezePanel.PowerPlatforms();
                    }
                }
                else
                {
                    // get reference to terrain object
                    tob = editor.GetTerrainAtObject(hit.transform.gameObject);

                    if (tob != null)
                    {
                        editor.SetEditValues(tob);

                        // convert player world coordinates into terrain coordinates
                        editor.GetCoords(hit, out int terX, out int terZ);

                        // produce ice at specified terrain coordinates
                        editor.ModifyTerrain(terX, terZ);
                    }
                }
            }
            else
            {
                if (iceAudio.isPlaying)
                {
                    iceAudio.Stop();
                }

                emission.enabled = false;
            }
        }
        else
        {
            if (iceAudio.isPlaying)
            {
                iceAudio.Stop();
            }

            emission.enabled = false;
        }
    }