HTC Vive VR房產專案開發一(手柄提示+戶型圖)
一、匯入房子模型、SteamVR、TheLabRenderer、VRTK,進行相關設定,並將CameraRig拖動到場景中,但此時並沒有看到房屋模型(http://blog.csdn.net/nicolelili1/article/details/74857374)
二、給Camera(eye)新增指令碼Valve Camera,然後場景就顯示出來了
三、建立一個新物體,重新命名為PlayArea,並新增指令碼VRTK_Dash Teleport,然後就可以實現瞬移了,場景中的房子和地面等物體都已經添加了collider。(http://blog.csdn.net/nicolelili1/article/details/74857482)
現在跟我一起來看一下我的家吧!它是一個四周都是落地窗的玻璃房喔!
向外延伸的陽臺上用於休息的長凳和椅子
這裡是我工作的地方
這裡是我吃飯和會客的地方
這裡是我的休閒放鬆區
這裡是我的臥室
這裡是我的廚房
看一下外面的景色,滿眼翠綠,真養眼,陽光真好,景色真美,鳥鳴真動耳,舒心、賞心悅目,怎一個好字了得
看一下房屋周圍,這是蒲公英,我置身在了蒲公英的海洋,真的好美
看,一朵蒲公英落到了我的手上
這裡是遍地的薰衣草
三、給右手柄新增提示,告訴使用者每個按鍵的作用。將VRTK下的ControllerToolTips新增為有手柄的子物體,並設各個鍵所要顯示的文字
執行後的結果
四、給左手柄新增戶型圖
1、給menu鍵新增提示。將ControllerToolTips作為VRTK_SDKManager左手柄的子物體,並設定Start Menu Text的值
2、選中戶型圖的圖片,將型別設定為Sprite
3、在CameraRig下左手柄下建立一個canvas,設定位置、大小和Render Mode為World Space
4、在Canvas下建立一個Image,並設定其Source Image
5、建立一個指令碼,並新增到Canvas上
指令碼程式碼
將指令碼新增到Canvas上using System.Collections; using System.Collections.Generic; using UnityEngine; public class FloorPlan : MonoBehaviour { private bool isShow = false; void Start () { //初始時隱藏戶型圖 gameObject.SetActive(false); } //控制戶型圖 public void changeFloorPlan() { Debug.LogError("change floor plan..............."); //如果戶型圖顯示則隱藏 if (isShow) { Debug.LogError("hide floor plan..............."); hideFloorPlan(); } //如果戶型圖隱藏則顯示 else { Debug.LogError("show floor plan..............."); showFloorPlan(); } //更改變數的值 isShow = !isShow; } //顯示戶型圖 private void showFloorPlan() { gameObject.SetActive(true); } //隱藏戶型圖 private void hideFloorPlan() { gameObject.SetActive(false); } }
6、在LeftController的VRTK_Controller Events中可以看到按下menu鍵的方法是Button Two Press,新增元件
7.把canvas拖動到方法On Button Two Press中,並選擇changeFloorPlan方法
8、執行後的結果
左手柄提示戶型圖,有手柄在相應的按鍵上提示相應的文字
按下左手柄的menu鍵後,出現戶型圖
再次按menu鍵則戶型圖消失
五、給戶型圖設定漸隱漸現的效果
1、從Assets Store上下載DOTween並import進unity
2、編寫指令碼
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
public class FloorPlan : MonoBehaviour {
private bool isShow = false;
public Transform floorPlanImage;
void Start () {
//初始時隱藏戶型圖
gameObject.SetActive(false);
}
//控制戶型圖
public void changeFloorPlan()
{
Debug.LogError("change floor plan...............");
//如果戶型圖顯示則隱藏
if (isShow)
{
Debug.LogError("hide floor plan...............");
hideFloorPlan();
}
//如果戶型圖隱藏則顯示
else
{
Debug.LogError("show floor plan...............");
showFloorPlan();
}
//更改變數的值
isShow = !isShow;
}
//顯示戶型圖
private void showFloorPlan()
{
if(!gameObject.activeInHierarchy)
gameObject.SetActive(true);
floorPlanImage.localScale = Vector3.zero; //初始值設定為0
floorPlanImage.DOScale(Vector3.one, 3f); //經過0.3s縮放為1
}
//隱藏戶型圖
private void hideFloorPlan()
{
//gameObject.SetActive(false);
floorPlanImage.DOScale(Vector3.zero, 3f); //從1縮放為0
}
}
3、將image拖動到指令碼的Floor Plan Image變數處
4、執行後的結果,按下menu鍵後戶型圖從無到有,然後再次按下menu鍵,戶型圖從有到無
注:
1、參考資料:
http://edu.manew.com/course/344/learn#lesson/5750
http://blog.csdn.net/nicolelili1/article/details/74857374
http://blog.csdn.net/nicolelili1/article/details/74857482
2、報錯:ERROR!Valve shadow packer ran out of space in the 4096x4086 texture!
原因:TheLabRenderer是將陰影渲染到一張貼圖上面,如果解析度不夠的話,就會報這個錯誤
解決辦法:修改解析度。選中Camera(eye),修改Lights&Shadows下的解析度
3、