您的位置:首页 > Web前端 > CSS

HTC Vive VR房产项目开发四(切换家具样式)

2017-07-29 04:37 716 查看
一、在VRTK中的Prefabs下将RadiaMenu拖动到SofaContainer之下



二、在Panel中默认挂载了两个脚本,VRTK_Radial Menu和VRTK_Radia Menu Controller,由于不需要通过手柄的touch pad等键进行操作,移除掉VRTK_Radial Menu Controller脚本,并且将VRTK_IndependentRadiaMenuController脚本(允许环形菜单挂载到物体上)挂载到Panel物体上





三、对SofaContainer进行设置,与物体进行交互。选中SofaContainer-->Window-->VRTK-->Setup Interactable Object-->进行属性设置-->Setup selected object(s)



然后在右侧自动生成了如图所示的脚本配置



四、给SofaContainer添加一个BoxCollider,这样才能与物体进行交互



五、导入沙发的模型



将模型拖入Hiearchy视图并调整大小和位置



但是可以看到材质已经丢失了,找到材质,看到shader还是Standard



手动将材质改为Valve/vr_standard,并且将该材质重新赋给Febo沙发,就恢复正常了



六、创建脚本并添加到物体上

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using VRTK;

public class Furniture : MonoBehaviour {

//家具信息列表
public FurnitureData[] furnitureList;
private int currentTextureIndex = 0;
private int currentFurnitureIndex = 0;
//环形菜单
private VRTK_RadialMenu menu;

void Start () {
menu = GetComponentInChildren<VRTK_RadialMenu>();
//变量家具集合,将家具设置为隐藏
foreach (FurnitureData data in furnitureList)
{
data.furnitureModel.SetActive(false);
}
//将第一个家具显示出来
furnitureList[0].furnitureModel.SetActive(true);
updateMenu();

}

void Update () {

}

// 选择材质
public void SelectTexture(int index)
{
if (currentTextureIndex != index) {
//给材质赋值
furnitureList[1].furnitureModel.GetComponent<Renderer>().material.mainTexture = furnitureList[1].textures[2];
currentTextureIndex = index;
}
}

//选择家具
public void SelectFurniture(int index)
{
if(currentFurnitureIndex != index)
{
furnitureList[index].furnitureModel.SetActive(true);                                //显示传递过来的模型
furnitureList[currentFurnitureIndex].furnitureModel.SetActive(false);               //隐藏当前的模型
currentFurnitureIndex = index;                                                      //将当前模型的角标重新赋值
}
}

private void updateMenu()
{
for(int i = 0; i < 3; i++)
{
//每选择一个家具模型,就显示相应的缩略图
menu.buttons[i].ButtonIcon = furnitureList[currentFurnitureIndex].textThumbs[i];
menu.RegenerateButtons();
}
}
}


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[System.Serializable]

public class FurnitureData{

public GameObject furnitureModel;                   //家具
public Texture[] textures;                          //模型贴图列表
public Sprite[] textThumbs;                         //缩略图

}


七、将脚本Furniture挂载到SofaContainer上,设置集合长度是3,并给funiture model家具模型赋值



八、将准备好的材质赋给模型



九、添加材质缩略图

将jpg格式的缩略图导入到unity中后需要改成Sprite类型



十、分别设置radiomenu的按钮点击事件













分别指定button的缩略图



十一、运行后

瞬移到沙发旁边



当接触物体的时候弹出环形菜单



点击第二个方框按钮换成浅色沙发



点击第一个方框按钮切换成椅子



点击第三个方框按钮再次切换成深色沙发



注:参考资料:http://edu.manew.com/course/344/learn#lesson/5753
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: