// 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; } }
// 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(); } }
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; } } }