使用Unity引擎开发Rokid主机应用的模型交互操作

系列文章目录

unity知识点


文章目录


👉前言

Rokid Unity OpenXR Plugin 是为Unity 开发者提供的在 YodaOS-Master 空间计算操作系统上开发空间计算应用的工具。它基于OpenXR 标准开发,帮助开发者在 YodaOS-Master 上进行空间构建、虚实交互、空间感知,并最终构建完整的空间应用。

博客将会介绍如何实现 用Unity引擎开发Rokid主机的射线交互操作。希望这篇博客对Unity的开发者有所帮助。

大家好,我是心疼你的一切,不定时更新Unity开发技巧,觉得有用记得一键三连哦。

欢迎点赞评论哦.下面就让我们进入正文吧 !


提示:以下是本篇文章正文内容,下面案例可供参考

👉效果实现

Rokid模型操作

👉一、基础环境配置

配置的话跟着官网配置就好了,就不过多赘述了。
开发环境搭建文档
SDK导入

👉一、先把Demo素材导入

导入示例demo步骤:

第一步先打开:Package Manager

第二步:选择Rokid UXR SDK 在选择Sampies 点击Install就可以了

第三步:如下图找到示例demo学习即可

里面一共20几个Demo

👉四、创建UI交互应用

  1. 新建场景scene,把主摄像机删除掉,切记先导入示例项目哦

  2. 找到Packages里面的相机添加进去

  3. 添加UI预制体(如下图)

  4. 添加鼠标交互预制体(如下图)

  5. 场景新建一个Plane,然后调整相机距离稍微调远一点,X轴的旋转角度也调一下,可以稍微俯视的视角。

  6. 把UI预制体放在相机的下面,UI就可以跟着镜头旋转了,相当于固定UI在镜头上。

  7. UI预制体下面新建五个按钮 场景结构如下图,

  8. 场景搭建好之后开始编写脚本进行交互,代码如下

代码:

csharp 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Battlehub.RTHandles;

public class ModelData : MonoBehaviour
{
    public Transform carPrefab;
    private Transform cartemporary;   //临时的
    public PositionHandle positionHandle;
    public RotationHandle rotationHandle;
    public ScaleHandle scaleHandle; 

    // Start is called before the first frame update
    void Start()
    {
        
    }
    /// <summary>
    /// 生成模型
    /// </summary>
    public void CreateModel()
    {
        if (cartemporary==null)
        {
            Transform transfo = Instantiate(carPrefab);
            cartemporary = transfo;
        }
       

    }
    /// <summary>
    /// 移动模型
    /// </summary>
    public void PosModel()
    {
        CloseJH();
        if (cartemporary != null)
        {
            cartemporary.GetComponent<PositionHandle>().enabled = true;
        }

    }
    /// <summary>
    /// 旋转模型
    /// </summary>
    public void RotModel()
    {
        CloseJH();
        if (cartemporary != null)
        {
            cartemporary.GetComponent<RotationHandle>().enabled = true;
        }

    }
    /// <summary>
    /// 缩放模型
    /// </summary>
    public void ScaModel()
    {
        CloseJH();
        if (cartemporary != null)
        {
            cartemporary.GetComponent<ScaleHandle>().enabled = true;
        }

    }
    /// <summary>
    /// 删除模型
    /// </summary>
    public void DesModel()
    {
        if (cartemporary != null)
        {
            Destroy(cartemporary.gameObject);
        }
    }

    void CloseJH()
    {
        if (cartemporary != null)
        {
            cartemporary.GetComponent<PositionHandle>().enabled = false;
            cartemporary.GetComponent<RotationHandle>().enabled = false;
            cartemporary.GetComponent<ScaleHandle>().enabled = false;
        }
    }
    // Update is called once per frame
    void Update()
    {
        
    }
}
  1. 最后给按钮绑定事件,上面都有注释,按注释绑定即可。

  2. 最后运行点击即可看到效果,然后发布即可测试效果。

  3. 效果实现需要一个坐标轴的插件,记得导入,导入链接过两天上传一下,记得下载

如果想要更深,更复杂的场景,需要结合其他的Demo学习,就能编辑更多功能的应用


👉壁纸分享

👉总结

Rokid是一家专注于人机交互技术的产品平台公司,深耕5G+AI+AR领域的软硬件产品开发,为不同垂直领域的客户提供全栈式解决方案,打造智能时代的超级工人,有效提升用户体验、助力增效。

本次总结的就是使用Unity引擎开发Rokid主机的射线交互操作实现, 有需要会继续增加功能

如能帮助到你,就帮忙点个赞吧,三连更好哦,谢谢

你的点赞就是对博主的支持,有问题记得留言评论哦!

不定时更新Unity开发技巧,觉得有用记得一键三连哦。么么哒!

相关推荐
世洋Blog5 分钟前
SiYangUnityEventSystem,一个Unity中的事件系统
观察者模式·unity·c#·游戏引擎·事件系统
呆呆敲代码的小Y7 分钟前
【Unity实战篇】| 游戏滑动框添加特殊效果,如实时高亮显示、曲线滑动等
游戏·unity·游戏引擎·实战·u3d·免费游戏·unity实战技巧
切糕师学AI37 分钟前
如何用 VS Code + C# Dev Kit 创建类库项目并在主项目中引用它?
开发语言·c#
Tatalaluola1 小时前
【Quest开发】用unity UI快速实现交互
unity·游戏引擎
技术小甜甜1 小时前
[Godot] 在 Godot 3.1 中配置 ADB 可执行文件的实用指南
游戏·adb·游戏引擎·godot
William_cl1 小时前
【CSDN 专栏】C# ASP.NET控制器过滤器:自定义 ActionFilterAttribute 实战(避坑 + 图解)
c#·asp.net·状态模式
William_cl1 小时前
【CSDN 专栏】C# ASP.NET Razor 视图引擎实战:.cshtml 从入门到避坑(图解 + 案例)
开发语言·c#·asp.net
isyoungboy1 小时前
c++使用win新api替代DirectShow驱动uvc摄像头,可改c#驱动
开发语言·c++·c#
技术小甜甜1 小时前
【Godot】【入门】Godot 是什么?适合做哪些类型的游戏(附路线图+避坑清单)
游戏·游戏引擎·godot
xiaohai@Linux2 小时前
STM32之移植原生的infoNES nes游戏模拟器源码实现游戏自由!!!(原生纯C版,非汇编版)
stm32·游戏·模拟器·infones·nes游戏机