コード例 #1
0
        /// <summary>立体視のオン/オフを設定する</summary>
        private POWERS SetStereoPower(POWERS power)
        {
            // パワー ON/OFF
            m_CameraL.gameObject.SetActive(POWERS.OFF != power);
            m_CameraR.gameObject.SetActive(POWERS.OFF != power);
            // POWERS に応じて画面分割などを変化する
            switch (power)
            {
            case POWERS.NAKED_EYES:
                // 裸眼による交差法/平衡法
                m_CameraL.rect   = new Rect(0.0f, 0.0f, 0.5f, 1.0f);
                m_CameraR.rect   = new Rect(0.5f, 0.0f, 0.5f, 1.0f);
                m_CameraL.aspect = m_CameraR.aspect = 1.0f;
                break;

            case POWERS.SIDEBYSIDE:
                // HMD などの左右分割方式
                m_CameraL.rect   = new Rect(0.0f, 0.0f, 0.5f, 1.0f);
                m_CameraR.rect   = new Rect(0.5f, 0.0f, 0.5f, 1.0f);
                m_CameraL.aspect = m_CameraR.aspect = 2.0f;
                break;

            case POWERS.TOPANDBOTTOM:
                // HMD などの上下分割方式
                m_CameraL.rect   = new Rect(0.0f, 0.0f, 1.0f, 0.5f);
                m_CameraR.rect   = new Rect(0.0f, 0.5f, 1.0f, 0.5f);
                m_CameraL.aspect = m_CameraR.aspect = 2.0f;
                break;

            case POWERS.OFF:
            default:
                m_CameraL.gameObject.SetActive(false);
                m_CameraR.gameObject.SetActive(false);
                break;
            }
            return(m_Power = power);
        }
コード例 #2
0
        /// <summary>画面を更新する</summary>
        public void LateUpdate()
        {
            if (!m_AllowUpdate)
            {
                return;
            }

            if (POWERS.OFF != m_Power)
            {
                Transform mainCameraT = Camera.main.transform;
                //メインカメラが向いている方向を保存
                Vector3 v = mainCameraT.transform.localEulerAngles;
                //メインカメラの向きに応じて視差を生成
                Vector3 parallax = (new Vector3(Mathf.Cos(v.y * Mathf.Deg2Rad) * Mathf.Cos(v.z * Mathf.Deg2Rad),
                                                Mathf.Cos(v.x * Mathf.Deg2Rad) * Mathf.Sin(v.z * Mathf.Deg2Rad), -Mathf.Sin(v.y * Mathf.Deg2Rad) * Mathf.Cos(v.z * Mathf.Deg2Rad)))
                                   * m_cfg.ParallaxScale
                                   * (m_Mode == "RL" ? -1 : 1);
                //Console.WriteLine( "AroundAngle x={0} y={1},z={2}", v.x, v.y, v.z);
                // カメラの場所を視差分だけずらして
                m_CameraL.transform.position = mainCameraT.position - parallax;
                m_CameraR.transform.position = mainCameraT.position + parallax;
                // メインカメラの向き(保存済み)に合わせて両目カメラを向ける
                m_CameraL.transform.localEulerAngles = v;
                m_CameraR.transform.localEulerAngles = v;
            }

            // キー入力で切替える:オン/オフ
            if (Input.GetKeyDown(m_cfg.KeyTogglePower.ToLower()))
            {
                m_Power = m_Power + 1;
                if (POWERS.NAKED_EYES == m_Power && !m_cfg.PowersEnable.ToUpper().Contains("NAKED_EYES"))
                {
                    m_Power = m_Power + 1;
                }
                if (POWERS.SIDEBYSIDE == m_Power && !m_cfg.PowersEnable.ToUpper().Contains("SIDEBYSIDE"))
                {
                    m_Power = m_Power + 1;
                }
                if (POWERS.TOPANDBOTTOM == m_Power && !m_cfg.PowersEnable.ToUpper().Contains("TOPANDBOTTOM"))
                {
                    m_Power = m_Power + 1;
                }
                if (POWERS._ENUM_MAX_VALUE == m_Power)
                {
                    m_Power = POWERS._ENUM_FIRST_VALUE;
                }
                SetStereoPower(m_Power);
            }

            // キー入力で切替える:平行法/交差法
            if (Input.GetKeyDown(m_cfg.KeyToggleMode.ToLower()))
            {
                m_Mode = (m_Mode == "RL" ? "LR" : "RL");
                SetStereoMode(m_Mode);   // 不要
            }

            // ParallaxScale の調整モード
            if ((int)DEBUG_LEVELS.PARALLAX_SCALE_ADJ == m_cfg.DebugLevel)
            {
                if (Input.GetKey(m_cfg.ParaSclAdjKeyInc.ToLower()) && m_cfg.ParallaxScale < _CONFIG.ParaSclAdjMax)
                {
                    m_cfg.ParallaxScale += _CONFIG.ParaSclAdjStep
                                           * (Input.GetKey(KeyCode.RightShift) ? 10 : 1);
                    if (_CONFIG.ParaSclAdjMax < m_cfg.ParallaxScale)
                    {
                        m_cfg.ParallaxScale = _CONFIG.ParaSclAdjMax;
                    }
                }
                if (Input.GetKey(m_cfg.ParaSclAdjKeyDec.ToLower()) && 0.0f < m_cfg.ParallaxScale)
                {
                    m_cfg.ParallaxScale -= _CONFIG.ParaSclAdjStep
                                           * (Input.GetKey(KeyCode.RightShift) ? 10 : 1);
                    if (m_cfg.ParallaxScale < 0.0f)
                    {
                        m_cfg.ParallaxScale = 0.0f;
                    }
                }
            }
        }
コード例 #3
0
 private static void ResolvePowers (POWERS p) {
     switch (p) {
         case POWERS.LoyaltyCheck:
             gameState = GAMESTATES.LOYALTY_CHECK;
             break;
         case POWERS.SpecialElection:
             gameState = GAMESTATES.SPECIAL_ELECTION;
             break;
         case POWERS.PolicyCheck:
             gameState = GAMESTATES.POLICY_PEEK;
             players[CurrentPrez].Hand = policies.showTopThree();
             break;
         case POWERS.Assassination:
             gameState = GAMESTATES.ASSASSINATE;
             break;
         default:
             SetPres();
             break;
     }
 }
コード例 #4
0
        /// <summary>立体視のオン/オフを設定する</summary>
        private POWERS SetStereoPower( POWERS power )
        {
            // パワー ON/OFF
            m_CameraL.gameObject.SetActive( POWERS.OFF != power );
            m_CameraR.gameObject.SetActive( POWERS.OFF != power );
            // POWERS に応じて画面分割などを変化する
            switch( power ) {
            case POWERS.NAKED_EYES:
                // 裸眼による交差法/平衡法
                m_CameraL.rect = new Rect( 0.0f, 0.0f, 0.5f, 1.0f );
                m_CameraR.rect = new Rect( 0.5f, 0.0f, 0.5f, 1.0f );
                m_CameraL.aspect = m_CameraR.aspect = 1.0f;
                break;

            case POWERS.SIDEBYSIDE:
                // HMD などの左右分割方式
                m_CameraL.rect = new Rect( 0.0f, 0.0f, 0.5f, 1.0f );
                m_CameraR.rect = new Rect( 0.5f, 0.0f, 0.5f, 1.0f );
                m_CameraL.aspect = m_CameraR.aspect = 2.0f;
                break;

            case POWERS.TOPANDBOTTOM:
                // HMD などの上下分割方式
                m_CameraL.rect = new Rect( 0.0f, 0.0f, 1.0f, 0.5f );
                m_CameraR.rect = new Rect( 0.0f, 0.5f, 1.0f, 0.5f );
                m_CameraL.aspect = m_CameraR.aspect = 2.0f;
                break;

            case POWERS.OFF:
            default:
                m_CameraL.gameObject.SetActive( false );
                m_CameraR.gameObject.SetActive( false );
                break;
            }
            return( m_Power = power );
        }
コード例 #5
0
        /// <summary>画面を更新する</summary>
        public void LateUpdate()
        {
            if( !m_AllowUpdate )
                return;

            // 視差ベクトル
            Vector2 v = GameMain.Instance.MainCamera.GetAroundAngle();
            //Console.WriteLine( "AroundAngle x={0} Y={1}", v.x, v.y );
            Vector3 parallax = (new Vector3( Mathf.Cos( v.x * Mathf.Deg2Rad ), 0.0f, -Mathf.Sin( v.x * Mathf.Deg2Rad )))
                    * m_cfg.ParallaxScale
                    * GameMain.Instance.MainCamera.GetDistance()
                    * ( m_Mode == "RL" ? -1 : 1 );
                     
            if( POWERS.OFF != m_Power ) {
                // MainCamera が狙っている target:Vector3
                Vector3 target = GameMain.Instance.MainCamera.GetTargetPos();
                // カメラの場所を視差分だけずらして
                Transform mainCameraT = Camera.main.transform;
                m_CameraL.transform.position = mainCameraT.position - parallax;
                m_CameraR.transform.position = mainCameraT.position + parallax;
                // target を狙いなおす
                m_CameraL.transform.LookAt( target, mainCameraT.up );
                m_CameraR.transform.LookAt( target, mainCameraT.up );
            }
 
            // キー入力で切替える:オン/オフ
            if( Input.GetKeyDown( m_cfg.KeyTogglePower.ToLower())) {
                m_Power = m_Power + 1;
                if( POWERS.NAKED_EYES == m_Power && !m_cfg.PowersEnable.ToUpper().Contains( "NAKED_EYES" ))
                    m_Power = m_Power + 1;
                if( POWERS.SIDEBYSIDE == m_Power && !m_cfg.PowersEnable.ToUpper().Contains( "SIDEBYSIDE" ))
                    m_Power = m_Power + 1;
                if( POWERS.TOPANDBOTTOM == m_Power && !m_cfg.PowersEnable.ToUpper().Contains( "TOPANDBOTTOM" ))
                    m_Power = m_Power + 1;
                if( POWERS._ENUM_MAX_VALUE == m_Power )
                    m_Power = POWERS._ENUM_FIRST_VALUE;
                SetStereoPower( m_Power );
            }

            // キー入力で切替える:平行法/交差法
            if( Input.GetKeyDown( m_cfg.KeyToggleMode.ToLower())) {
                m_Mode = ( m_Mode == "RL" ? "LR" : "RL" );
                SetStereoMode( m_Mode ); // 不要
            }

            // ParallaxScale の調整モード
            if( (int)DEBUG_LEVELS.PARALLAX_SCALE_ADJ == m_cfg.DebugLevel )
            {
                if( Input.GetKey( m_cfg.ParaSclAdjKeyInc.ToLower()) && m_cfg.ParallaxScale < _CONFIG.ParaSclAdjMax ) {
                    m_cfg.ParallaxScale += _CONFIG.ParaSclAdjStep
                            * ( Input.GetKey( KeyCode.RightShift ) ? 10 : 1 );
                    if( _CONFIG.ParaSclAdjMax < m_cfg.ParallaxScale )
                        m_cfg.ParallaxScale = _CONFIG.ParaSclAdjMax;
                }
                if( Input.GetKey( m_cfg.ParaSclAdjKeyDec.ToLower()) && 0.0f < m_cfg.ParallaxScale ) {
                    m_cfg.ParallaxScale -= _CONFIG.ParaSclAdjStep
                            * ( Input.GetKey( KeyCode.RightShift ) ? 10 : 1 );
                    if( m_cfg.ParallaxScale < 0.0f )
                        m_cfg.ParallaxScale = 0.0f;
                }
            }
        }
コード例 #6
0
ファイル: Board.cs プロジェクト: Lauraducky/SecretHitler
 public void SetPower (int position, POWERS power) {
     spaces[position-1] = power;
 }