1. 程式人生 > >HTC Vive VR房產專案開發一(手柄提示+戶型圖)

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上

指令碼程式碼

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);
    }
	
}
將指令碼新增到Canvas上


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、