Esempio n. 1
0
        // Update is called once per frame
        void Update()
        {
            // ヒットしているオブジェクト名を取得
            RaycastHit hitInfo;
            GameObject hitObj;

            MyOVRRayHelper.GetRayHit(out hitInfo, out hitObj);
            _hitObjName = (hitObj != null ? hitObj.name : "");

            if (_enabled == true)
            {
                // コントローラーから前に伸ばしたRayを作成
                var controller = MyOVRRayHelper.GetController();
                var pointerRay = new Ray(controller.position, controller.transform.forward);
                _leaserPointerRenderer.positionCount = 2;
                _leaserPointerRenderer.SetPosition(0, pointerRay.origin);
                if (hitObj != null)
                {
                    // hitした位置までレーザーを伸ばす
                    _leaserPointerRenderer.SetPosition(1, hitInfo.point);
                }
                else
                {
                    // hitしない場合、Rayの方向に最大長さの位置をもとめてそこまでレーザーを伸ばす
                    _leaserPointerRenderer.SetPosition(1, pointerRay.origin + (pointerRay.direction * 100));
                }
            }
            else
            {
                // レーザーをクリア
                _leaserPointerRenderer.positionCount = 0;
            }
        }
Esempio n. 2
0
        // update
        void Update()
        {
            // ヒットしているオブジェクトを取得
            RaycastHit hitInfo;
            GameObject hitObj;

            MyOVRRayHelper.GetRayHit(out hitInfo, out hitObj);

            // 掴むのを開始
            if (MyOVRInput.GetDown(this.grabInputKey) && IsGrabable(hitObj))
            {
                _grabObject   = hitObj;
                _grabDistance = hitInfo.distance;
                _grabOffset   = _grabObject.transform.position - hitInfo.point;       // ヒットした場所からオブジェクト中心までの距離
                _gravOldPos   = _grabObject.transform.position;
            }

            // 掴んだオブジェクトを移動
            if (_grabObject != null)
            {
                // 距離変更
                if (this.isToFarAction())
                {
                    _grabDistance += this.distanceChangeSpeed;
                }
                if (this.isToNearAction())
                {
                    _grabDistance -= this.distanceChangeSpeed;
                }
                if (_grabDistance < 0.1)
                {
                    _grabDistance = 0.1f;
                }

                // 移動
                _gravOldPos = _grabObject.transform.position;

                Transform controller     = MyOVRRayHelper.GetController();
                Vector3   rayDistancePos = controller.position;
                rayDistancePos += controller.rotation * (Vector3.forward * _grabDistance);         // コントローラから_grabDistanceほど進んだ位置
                _grabObject.transform.position = rayDistancePos + _grabOffset;

                // 重力を無効にするために速度をゼロに戻しておく
                Rigidbody rigidbody = _grabObject.GetComponent <Rigidbody>();
                if (rigidbody != null)
                {
                    rigidbody.velocity = Vector3.zero;
                }
            }

            // 掴んだオブジェクトを離す
            if (MyOVRInput.GetUp(this.grabInputKey))
            {
                this.RelaseGrab();
            }
        }
Esempio n. 3
0
        void Update()
        {
            if (MyOVRInput.GetDown(this.warpInputKey))
            {
                // ヒットしているオブジェクト名を取得
                RaycastHit hitInfo;
                GameObject hitObj;
                MyOVRRayHelper.GetRayHit(out hitInfo, out hitObj);

                if (hitObj != null)
                {
                    Vector3 newPos = hitInfo.point;
                    newPos += new Vector3(0, this.baseHeight, 0);
                    _moveTarget.position = newPos;
                }
            }
        }