예제 #1
0
    ///////////////////////////////////////////////////////////
    // demo screen to explain external forces
    ///////////////////////////////////////////////////////////
    private void DemoForces()
    {
        Demo.DrawBoxes("external forces", "The camera and weapon are mounted on 8 positional and angular SPRINGS.\nEXTERNAL FORCES can be applied to these in various ways, creating unique movement patterns every time. This is useful for shockwaves, explosion knockback and earthquakes.", m_ImageLeftArrow, m_ImageRightArrow);

        if (Demo.FirstFrame)
        {
            Demo.DrawCrosshair = false;
            LoadCamera(StompingCamera);
            SwitchWeapon(1, ModernWeapon, null, -1, false, false);
            m_Player.Controller.Load(SmackController);
            m_Player.Camera.SnapZoom();
            Demo.FirstFrame = false;
            Demo.Teleport(m_ForcesPos, m_ForcesAngle);
            Demo.ButtonColumnArrowY = -100.0f;
        }

        if (Demo.ShowGUI)
        {
            // draw toggle column showing force examples
            Demo.ButtonSelection = -1;
            string[] strings = new string[] { "Earthquake", "Boss Stomp", "Incoming Artillery", "Crashing Airplane" };
            Demo.ButtonSelection = Demo.ButtonColumn(150, Demo.ButtonSelection, strings, m_ImageRightPointer);
            if (Demo.ButtonSelection != -1)
            {
                switch (Demo.ButtonSelection)
                {
                case 0:                         // --- Earthquake ---
                    LoadCamera(StompingCamera);
                    m_Player.Controller.Load(SmackController);
                    m_Player.Camera.DoEarthQuake(0.1f, 0.1f, 10.0f);
                    Demo.ButtonColumnArrowFadeoutTime = Time.time + 9;
                    m_AudioSource.Stop();
                    m_AudioSource.PlayOneShot(m_EarthquakeSound);
                    break;

                case 1:                         // --- Boss Stomp ---
                    m_Player.Camera.StopEarthQuake();
                    LoadCamera(ArtilleryCamera);
                    m_Player.Controller.Load(SmackController);
                    m_Player.Camera.DoStomp(1.0f);
                    Demo.ButtonColumnArrowFadeoutTime = Time.time;
                    m_AudioSource.Stop();
                    m_AudioSource.PlayOneShot(m_StompSound);
                    break;

                case 2:                         // --- Incoming Artillery ---
                    m_Player.Camera.StopEarthQuake();
                    LoadCamera(ArtilleryCamera);
                    m_Player.Controller.Load(ArtilleryController);
                    m_Player.Camera.DoBomb(1);
                    m_Player.Controller.AddForce(UnityEngine.Random.Range(-1.5f, 1.5f), 0.1f,
                                                 UnityEngine.Random.Range(-1.5f, 1.5f));
                    Demo.ButtonColumnArrowFadeoutTime = Time.time + 1;
                    m_AudioSource.Stop();
                    m_AudioSource.PlayOneShot(m_ExplosionSound);
                    break;

                case 3:                         // --- Crashing Airplane ---
                    LoadCamera(StompingCamera);
                    m_Player.Controller.Load(SmackController);
                    m_Player.Camera.DoEarthQuake(0.25f, 0.2f, 10.0f, 1.0f, 6.5f);
                    Demo.ButtonColumnArrowFadeoutTime = Time.time + 9;
                    m_AudioSource.Stop();
                    m_AudioSource.PlayOneShot(m_EarthquakeSound);
                    m_Player.Camera.RenderingFieldOfView = 80;
                    m_Player.Camera.Zoom();
                    if (m_ChrashingAirplaneRestoreTimer != null)
                    {
                        m_ChrashingAirplaneRestoreTimer.Cancel();
                    }
                    m_ChrashingAirplaneRestoreTimer = vp_Timer.In(9, delegate() { m_Player.Camera.RenderingFieldOfView = 60; m_Player.Camera.Zoom(); });
                    break;
                }
                Demo.LastInputTime = Time.time;
            }


            // show a screenshot preview of the mouse input editor section
            // in the bottom left corner.
            Demo.DrawEditorPreview(m_ImageWeaponPosition, m_ImageEditorPreview, m_ImageEditorScreenshot);
        }
    }
예제 #2
0
    /// <summary>
    /// demo screen to explain external forces
    /// </summary>
    private void DemoForces()
    {
        m_Demo.DrawBoxes("external forces", "The camera and weapon are mounted on 8 positional and angular SPRINGS.\nEXTERNAL FORCES can be applied to these in various ways, creating unique movement patterns every time. This is useful for shockwaves, explosion knockback and earthquakes.", m_ImageLeftArrow, m_ImageRightArrow);

        if (m_Demo.FirstFrame)
        {
            m_Demo.DrawCrosshair = false;
            m_Demo.ResetState();
            m_Demo.Camera.Load(StompingCamera);
            m_Demo.WeaponHandler.SetWeapon(1);
            m_Demo.Controller.Load(SmackController);
            m_Demo.Camera.SnapZoom();
            m_Demo.FirstFrame = false;
            m_Demo.Teleport(m_ForcesPos, m_ForcesAngle);
            m_Demo.ButtonColumnArrowY = -100.0f;
            m_Demo.Input.ForceCursor  = true;
        }

        if (m_Demo.ShowGUI)
        {
            // draw toggle column showing force examples
            m_Demo.ButtonSelection = -1;
            string[] strings = new string[] { "Earthquake", "Boss Stomp", "Incoming Artillery", "Crashing Airplane" };
            m_Demo.ButtonSelection = m_Demo.ButtonColumn(150, m_Demo.ButtonSelection, strings, m_ImageRightPointer);
            if (m_Demo.ButtonSelection != -1)
            {
                switch (m_Demo.ButtonSelection)
                {
                case 0:                         // --- Earthquake ---
                    m_Demo.Camera.Load(StompingCamera);
                    m_Demo.Controller.Load(SmackController);
                    m_Demo.PlayerEventHandler.Earthquake.TryStart(new Vector3(0.2f, 0.2f, 10.0f));
                    m_Demo.ButtonColumnArrowFadeoutTime = Time.time + 9;
                    m_AudioSource.Stop();
                    m_AudioSource.pitch = Time.timeScale;
                    m_AudioSource.PlayOneShot(m_EarthquakeSound);
                    break;

                case 1:                         // --- Boss Stomp ---
                    m_Demo.PlayerEventHandler.Earthquake.Stop();
                    m_Demo.Camera.Load(ArtilleryCamera);
                    m_Demo.Controller.Load(SmackController);
                    m_Demo.PlayerEventHandler.GroundStomp.Send(1.0f);
                    m_Demo.ButtonColumnArrowFadeoutTime = Time.time;
                    m_AudioSource.Stop();
                    m_AudioSource.pitch = Time.timeScale;
                    m_AudioSource.PlayOneShot(m_StompSound);
                    break;

                case 2:                         // --- Incoming Artillery ---
                    m_Demo.PlayerEventHandler.Earthquake.Stop();
                    m_Demo.Camera.Load(ArtilleryCamera);
                    m_Demo.Controller.Load(ArtilleryController);
                    m_Demo.PlayerEventHandler.BombShake.Send(1.0f);
                    m_Demo.Controller.AddForce(UnityEngine.Random.Range(-1.5f, 1.5f), 0.5f,
                                               UnityEngine.Random.Range(-1.5f, -0.5f));
                    m_Demo.ButtonColumnArrowFadeoutTime = Time.time + 1;
                    m_AudioSource.Stop();
                    m_AudioSource.pitch = Time.timeScale;
                    m_AudioSource.PlayOneShot(m_ExplosionSound);
                    Vector3 explosionPos = m_Demo.Controller.transform.TransformPoint(Vector3.forward * UnityEngine.Random.Range(1, 2));
                    explosionPos.y = m_Demo.Controller.transform.position.y + 1;
                    GameObject.Instantiate(m_ArtilleryFX, explosionPos, Quaternion.identity);
                    break;

                case 3:                         // --- Crashing Airplane ---
                    m_Demo.Camera.Load(StompingCamera);
                    m_Demo.Controller.Load(SmackController);
                    m_Demo.PlayerEventHandler.Earthquake.TryStart(new Vector3(0.25f, 0.2f, 10.0f));
                    m_Demo.ButtonColumnArrowFadeoutTime = Time.time + 9;
                    m_AudioSource.Stop();
                    m_AudioSource.pitch = Time.timeScale;
                    m_AudioSource.PlayOneShot(m_EarthquakeSound);
                    m_Demo.Camera.RenderingFieldOfView     = 80;
                    m_Demo.Camera.RotationEarthQuakeFactor = 6.5f;
                    m_Demo.Camera.Zoom();
                    vp_Timer.In(9, delegate() { m_Demo.Camera.RenderingFieldOfView = 60; m_Demo.Camera.RotationEarthQuakeFactor = 0.0f; m_Demo.Camera.Zoom(); },
                                m_ChrashingAirplaneRestoreTimer);
                    break;
                }
                m_Demo.LastInputTime = Time.time;
            }


            // show a screenshot preview of the mouse input editor section
            // in the bottom left corner.
            m_Demo.DrawEditorPreview(m_ImageWeaponPosition, m_ImageEditorPreview, m_ImageEditorScreenshot);
        }
    }