Пример #1
0
        /// <summary>
        /// 展開中の更新処理
        /// </summary>
        public void UnfoldUpdate(HandMaster _hand)
        {
            // 武器を展開中でないならリターン
            if (WeaponUnfold == false || ActiveHand == null)
            {
                return;
            }

            switch (currentState)
            {
            // プレイヤーの周囲から
            case CreateState.PLAYER_CIRCLE:
                // 回転
                break;

            // 手の角度から
            case CreateState.HAND_DISPLAY:
                Create_Display(_hand);
                break;

            // 手の方向から
            case CreateState.HAND_FORWARD:
                Create_Forward(_hand);
                break;
            }
        }
Пример #2
0
        /// <summary>
        /// 手の方向から生成
        /// </summary>
        private void Create_Forward(HandMaster _hand)
        {
            // コントローラーの方向を取得
            Vector3 controllerDir = _hand.transform.forward;

            // 初回生成
            if (WeaponUnfold == false)
            {
                weaponState = -1;
                spawnObj    = Instantiate(weaponList[0], spawnOriginObj_Display.transform);
            }
            else
            {
                spawnObj.transform.position = spawnOriginObj_Display.transform.position;
            }

            int angleState = 0;

            // 前方
            if (controllerDir.z >= 0.5f)
            {
                Debug.Log("前");
                angleState = 0;
            }
            // 後方
            else if (controllerDir.z <= -0.5f)
            {
                Debug.Log("後ろ");
                angleState = 1;
            }
            // 右方
            if (controllerDir.x >= 0.5f)
            {
                Debug.Log("右");
                angleState = 2;
            }
            // 左方
            else if (controllerDir.x <= -0.5f)
            {
                Debug.Log("左");
                angleState = 3;
            }

            if (angleState != weaponState)
            {
                weaponState = angleState;

                Destroy(spawnObj);

                spawnObj = Instantiate(weaponList[weaponState], spawnOriginObj_Display.transform.position, Quaternion.identity);
            }


            WeaponUnfold = true;
        }
Пример #3
0
        /// <summary>
        /// 手の角度から武器を生成
        /// </summary>
        private void Create_Display(HandMaster _hand)
        {
            // 武器が対応されている角度検知
            float angleDiff = 180.0f / weaponList.Count;
            // 左コントローラーの角度検知
            float controllerAngle = 0.0f;

            if (_hand.myTouch == OVRInput.RawButton.LHandTrigger)
            {
                controllerAngle = OVRInput.GetLocalControllerRotation(OVRInput.Controller.LTrackedRemote).z;
            }
            else if (_hand.myTouch == OVRInput.RawButton.RHandTrigger)
            {
                controllerAngle = OVRInput.GetLocalControllerRotation(OVRInput.Controller.RTrackedRemote).z;
            }

            if (WeaponUnfold == false)
            {
                spawnObj          = Instantiate(weaponList[0], transform);
                activeHand.hasObj = spawnObj;
            }

            // コントローラーの角度を実際の角度に
            float angle      = 180.0f * controllerAngle;
            int   angleState = (int)angle / (int)angleDiff;

            if (angleState <= weaponList.Count && weaponState != angleState)
            {
                if (angleState < 0)
                {
                    angleState = weaponList.Count - 1;
                }
                else if (angleState > 1)
                {
                    angleState = weaponList.Count - 2;
                }
                weaponState = angleState;
                Destroy(spawnObj);

                spawnObj          = Instantiate(weaponList[angleState], transform);
                activeHand.hasObj = spawnObj;
            }
            WeaponUnfold = true;
        }