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沙发,就恢复正常了
六、创建脚本并添加到物体上
七、将脚本Furniture挂载到SofaContainer上,设置集合长度是3,并给funiture model家具模型赋值
八、将准备好的材质赋给模型
九、添加材质缩略图
将jpg格式的缩略图导入到unity中后需要改成Sprite类型
十、分别设置radiomenu的按钮点击事件
分别指定button的缩略图
十一、运行后
瞬移到沙发旁边
当接触物体的时候弹出环形菜单
点击第二个方框按钮换成浅色沙发
点击第一个方框按钮切换成椅子
点击第三个方框按钮再次切换成深色沙发
注:参考资料:http://edu.manew.com/course/344/learn#lesson/5753
二、在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
相关文章推荐
- HTC Vive VR房产项目开发五(通过材质列表切换地板材质)
- HTC Vive VR房产项目开发三(添加物体提示)
- HTC Vive VR房产项目开发二(开关门)
- HTC Vive VR房产项目开发一(手柄提示+户型图)
- Htc Vive Sdk(OpenVR),Unity3d 开发,手柄射线
- 【VR开发】htc vive+unity 3D 简单保龄球游戏
- Htc Vive Sdk(OpenVR),Unity3d 开发,手柄射线
- HTC Vive VR Unity 开发入门
- Htc Vive Sdk(OpenVR),Unity3d 开发,UGUI界面响应
- Htc Vive Sdk(OpenVR),Unity3d 开发,UGUI响应代码分析篇
- (部分原创)unity项目开发中VR工程的优化(上)
- (部分原创)unity项目开发中VR工程的优化(下)
- JS实现导航栏项目自动切换标签样式
- 微信公众号搭建营销型房产项目程序后台开发
- unity vr sample on htc vive
- VR项目开发中的一些心得,持续更新
- HTC VIVE SDK 中的例子 hellovr_opengl 程序流程分析
- iOS项目开发实战——实现视图切换动画
- HTC Vive SteamVR Plugin插件使用。
- Andorid 项目中Dialog的便捷开发,全面的样式选择.