Unity下使用暴风魔镜SDK通过头部和手柄控制字体拼凑(二)

MojingSDK For Unity Unity 3D 开发暴风魔镜VR 游戏的SDK,帮助开发者快速开发一款VR游戏。 立即下载

工程如下图,按照笔划顺序给笔划命名


stroke下的物体是笔划实体,tag是Font,加碰撞体

originalStrokePositionParent下的是笔划实体原本待在的地方,tagboardStrokePosition

position是墙上希望笔划应该待在的地方,tag是wallStrokePosition,加碰撞体

代码如下:

选择笔划及控制移动

using UnityEngine;
using System.Collections;
namespace MojingSample.CrossPlatformInput.PlatformSpecific
{

    public class FontMove : MonoBehaviour
    {

        public static FontMove _instance;

        private GameObject lacuchPosition;//射线发射位置
        public GameObject targetMoveObject = null;//被拾起的笔画

        public LayerMask moveLayer;//移动层
        public LayerMask wallLayer;//墙体层

        public bool isMove = false;//是否可以移动
        public bool isFind = true;//是否可以寻找

        private Vector3 lastPosition;
        private int strokeNumber=1;//记录笔画顺序

        void Awake()
        {
            _instance = this;
        }

        void Start()
        {
            lacuchPosition = GameObject.FindGameObjectWithTag("MainCamera");
        }

        // Update is called once per frame
        void Update()
        {
            FindTarget();
            if (isMove == true)
                TargetMove();
        }

        void FindTarget()
        {//寻找需要选择的笔画
            if (isFind == true)
                if (CrossPlatformInputManager.GetButtonDown("C") || Input.GetKeyDown(KeyCode.J))
                {

                    RaycastHit info;
                    bool hit = Physics.Raycast(lacuchPosition.transform.position, lacuchPosition.transform.forward, out info, 100);
                    if (hit)
                    {
                        if (info.transform.tag == "Font")
                        {
                            if (info.transform.name == strokeNumber.ToString())
                            {//如果满足要求的笔划顺序
                                targetMoveObject = info.transform.gameObject;
                                lastPosition = targetMoveObject.transform.position;
                                isMove = true;
                                isFind = false;
                                targetMoveObject.GetComponent<BoxCollider>().enabled = false;
                                strokeNumber++;
                            }
                        }
                    }
                }
        }

        void TargetMove()
        {//移动笔画
            if (targetMoveObject != null)
            {
                RaycastHit info;
                bool hit = Physics.Raycast(lacuchPosition.transform.position, lacuchPosition.transform.forward, out info, 100);
                if (hit)
                {
                    if (info.transform.tag == "Wall")
                    {
                        Vector3 pos = info.point;
                        pos -= new Vector3(0.1f, 0, 0);
                        targetMoveObject.transform.position = pos;
                    }
                }
            }
        }
    }
}
控制笔划匹配

using UnityEngine;
using System.Collections;
namespace MojingSample.CrossPlatformInput.PlatformSpecific
{
    public class FontAlign : MonoBehaviour
    {
        private GameObject[] wallStrokePosition;//墙上应该被放置的笔画的位置
        private GameObject lacuchPosition;//笔画向墙发射射线的位置

        private GameObject targetStroke = null;//墙上被选中的笔画

        // Use this for initialization
        void Start()
        {
            wallStrokePosition = GameObject.FindGameObjectsWithTag("wallStrokePosition");
        }

        // Update is called once per frame
        void Update()
        {
            if (FontMove._instance.targetMoveObject != null)
            {
                lacuchPosition = FontMove._instance.targetMoveObject;
            }
            FindPosition();
        }
        void FindPosition()
        {
            if (lacuchPosition != null)
            {
                foreach (GameObject go in wallStrokePosition)
                {
                    if (go.name == lacuchPosition.name)
                    {
                        targetStroke = go;
                    }
                }
                if (FontMove._instance.targetMoveObject != null)
                    if (Vector3.Distance(lacuchPosition.transform.position, targetStroke.transform.position) <= 0.5f)
                {
                    FontMove._instance.isMove = false;
                    FontMove._instance.isFind = true;
                    FontMove._instance.targetMoveObject.transform.position = targetStroke.transform.position;
                    FontMove._instance.targetMoveObject = null;
                }
            }

        }
    }

}

有不足的地方或者更好地解决办法希望大家能指出哦

暴风魔镜SDK.zip MojingSDK For Unity V1.3.5562 (R) 暴风魔镜的SDK,用于再unity3d中建立VR项目。 立即下载

相关推荐

暴风魔镜sdk

暴风魔镜开发的sdk包,支持3D,支持反畸变,提供陀螺仪等传感器的参数

Unity 视频播放器插件 AVPro Video -- 360全景视频播放+暴风魔镜sdk

软件: Unity 2018.2.15f1 (64-bit) AVPro Video 1.10.1.unitypackage MojingSDK For Unity V1.3.5562 (R).unitypackage Step1. 以AVPro Video提供的demo为基础进行改进, 修改视频源。可以是本机的,也可以是网址(访问云端) Step2. 将camera改为暴风魔镜sdk提供的 MojingMan预制体 Step3. 生成Android APK设置 1)...

lingxiaoai的专栏 2012

暴风魔镜sdk.unitypackage

暴风魔镜sdk :MojingSDK For Unity V1.3.5386 (R),支持Unity2019.4版本。

暴风魔镜SDK在Unity3D 5.6中的简单应用

去年买了个暴风魔镜4,如今一直放在家里吃灰,这些天对Unity3D开发VR兴趣正浓,刚好公司项目不忙,花了几天玩玩暴风魔镜SDK,因为网上的资料不算多,暴风提供的文档也不太适合像我这样的Unity小白,所以爬了好久坑终于可以在手机上运行了。 运行效果图:开发环境: 开发工具:Unity 5.6 暴风魔镜SDK:MojingSDK For Unity V1.3.5112 (R).zip SDK更新时间

亚特兰蒂斯 7205

Unity3D 对普通手柄的支持

本工程实例 为unity3D 对普通手柄支持的, 不需要外部映射这么麻烦, 轻轻松松就能实现对普通手柄的支持

最新暴风魔镜sdk

暴风魔镜sdk for unity

暴风魔镜SDK:MojingSDK For Unity V1.3.5112 (R).zip

  去年买了个暴风魔镜4,如今一直放在家里吃灰,这些天对Unity3D开发VR兴趣正浓,刚好公司项目不忙,花了几天玩玩暴风魔镜SDK,因为网上的资料不算多,暴风提供的文档也不太适合像我这样的Unity小白,所以爬了好久坑终于可以在手机上运行了。    运行效果图:    开发环境:    开发工具:Unity 5.6    暴风魔镜SDK:MojingSDK For Unity V1.3.5112...

weixin_30681121的博客 516

暴风魔镜VR 、HTC VR插件 及制作网址

暴风魔镜VR 、HTC VR插件及制作网址。

Unity中使用暴风魔镜蓝牙手柄

鉴于某些手机在使用大朋SDK以及谷歌SDK时会出现神器的小屏现象(比如某想的)故为了能够最大程度的兼容更多的手机,决定使用暴风魔镜的SDK。废话不多说~直接将使用暴风魔镜SDK时遇到的问题以及解决方案简单的罗列一下: 一、蓝牙手柄按键的响应 在暴风魔镜的官网下载了最新的SDK后导入Unity项目,发现SDK中的DEMO全部是非手柄控制的,然后只能参照着SDK里面的接口说明文档自己研究~~结果发

Loong的博客 1万+

暴风魔镜sdk demo

基于暴风魔镜sdk的一个demo,对初学者比较有帮助

水下探测小白必看:单波束vs多波束声呐,5分钟搞懂核心区别

本文为水下探测新手清晰解析了单波束与多波束声呐的核心区别。单波束声呐如同精准的“手电筒”,进行逐点扫描,适用于定点测深和目标探测;而多波束声呐则像“聚光灯”,能一次性覆盖一个扇区,高效获取海底地形三维信息,是海底测绘和水下三维建模的理想选择。文章通过生动的比喻和对比表格,帮助读者快速理解两者原理、效率差异及适用场景。

linux6sysadmin的博客 1048

Unity下使用暴风魔镜SDK通过头部和手柄控制字体拼凑(一)

最近在做一个模块,要求使用暴风魔镜SDK通过头部和手柄控制字体拼凑,注意不是笔划的书写哦,以为用头来控制写字实在是太奇怪了...... 以“鸟”字为例,其他的字也可以,只需设置好模板上笔划应到的位置,以及按顺序给笔划编号如1,2,3....即可。效果如下,肯定不完美,但还是要记录下来,希望能与大家多交流啊,哈哈哈哈 通过按下魔镜C键来选择下方的笔划,通过头部移动来控制笔划的移动 C键

dly215011的博客 1383

MATLAB PDE工具箱电磁场仿真平行电容板及电偶极子详解

首先打开matlab,在命令行输入pdetool打开PDE工具箱 工具箱的功能我就不赘述了,大概就是以有限元的数值计算方法,计算二阶偏微分方程,因此可以解决电磁场、热力学等问题。 首先点击左上角按钮,画三个矩形 画完一个后可以双击矩形编辑,参数如下: 其中R1表示上极板,R2表示下极板,R3表示整个空间区域。 在上方Set formula为R3-R2-R1,表示求解区域是整个空间区域减去两个极板。下拉框选择Electrostatics表示求解的是静电场问题。 接下来点击上方菜单栏中的这个按钮,表

weixin_42845306的博客 1万+

Unity下使用暴风魔镜SDK通过头部和手柄控制字体拼凑

最近在做一个模块,要求使用暴风魔镜SDK通过头部和手柄控制字体拼凑,注意不是笔划的书写哦,以为用头来控制写字实在是太奇怪了...... 以“鸟”字为例,其他的字也可以,只需设置好模板上笔划应到的位置,以及按顺序给笔划编号如1,2,3....即可。效果如下,肯定不完美,但还是要记录下来,希望能与大家多交流啊,哈哈哈哈 通过按下魔镜C键来选择下方的笔划,通过头部移动来控制笔划的移动 C键

ax1274669874的博客 1289

告别踩坑!S32K3xx芯片上RTD-SDK的DFLASH与FEE模块配置全流程(基于S32DS)

本文详细解析了在NXP S32K3xx系列MCU上配置RTD-SDK的DFLASH与FEE模块的全流程,基于S32DS开发环境。从Cache配置、Mem_43_InFls模块设置到MemAcc模块的三种调用模式,提供了实战代码示例和常见问题排查表,帮助开发者高效完成存储管理配置,避免常见错误。

weixin_42653691的博客 269

IEEE Access投稿全流程:从LaTeX模板到Overleaf实战(附避坑指南)

本文详细解析了向IEEE Access期刊投稿的完整流程,重点介绍了如何使用LaTeX模板在Overleaf平台上高效撰写和格式化论文。内容涵盖模板选择、作者信息填写、公式图表排版、参考文献管理(BibTeX)以及投稿前的最终检查清单,旨在帮助研究者,尤其是LaTeX新手,规避常见技术问题,顺利完成符合期刊严格要求的稿件提交。

open4的博客 576

Unity中使用暴风魔镜进行VR游戏开发

@VR简介 虚拟现实VR(Virtual Reality)和增强现实AR(Argument Reality)的概念其实在很多年前就已经出现,2015年下半年开始变得火热,在各大媒体圈子中频繁出现,而今年2016年成为VR元年,像Facebook、Sony、HTC、Google等行业巨头都在虚拟现实领域推出自己的硬件设备或者专门成立虚拟现实部门做出很大的投入。 虚拟现

ax1274669874的博客 3193

高通IPA硬件加速介绍

‌ 高通IPA (Internet Protocol Accelerator)模块是一种硬件加速模块,由高通公司(Qualcomm)提供,主要用于优化移动设备上的网络数据传输,特别是通过 LTE 、 5G 等移动网络的数据传输‌‌。IPA模块通过硬件加速,显著提高了数据传输的速度和效率,同时降低了设备的功耗,并提供了更稳定的网络连接,减少了数据传输中的丢包和延迟‌。

四儿家的小祖宗的博客 1623

暴风魔镜实现一个简单的VR

说了这么多,下面就开始说一个入门的案例 1. 首先下载最新版本的暴风魔镜SDK,下载地址:http://open.mojing.cn/sdk 2. 下载后,将SDK安装包导入到Unity当中 3. 4. 5. 在场景中建一个Cube 6. 删掉Unity自带的摄像机 7. 将暴风魔镜提供的开发相机拖入到场景中,魔镜相机路径是:Assets/MojingSDK/Prefabs/Mo

海涛高软 5774

基于YOLO的印章检测及文字识别

针对印章自动化检测与文字识别需求,提出了一种融合改进YOLO模型与OCR技术的端到端解决方案,旨在解决复杂背景干扰、印章残缺变形及环形文字排列等难题

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 8222

【云原生技术】SonarQube 生态中PMD插件和P3C插件详细介绍

4. 在项目中如何选择 / 组合 1. 小团队、对《阿里规约》认同度高 → 直接启用 **P3C**,配合 SonarJava 基本够用。 2. 追求全面 Bug/安全检测 + 额外编码规范 → **SonarJava + PMD**(必要时加 P3C 少量规则)。 3. 大型多团队,希望“一本规约”统一风格 → **P3C 为主**,再补充 SonarJava/PMD 的 Bug 与安全规则。 4. 通过 Quality Gate 控制:将 **Blocker/Critical** Bug

weixin_46453070的博客 1366

暴风魔镜与手柄相关的事件

up 代表手柄往前推 down 代表手柄往后推 left 代表手柄往左掰 right 代表手柄往右掰除了上面四个事件外,还有几个: CrossPlatformInputManager.GetButtonUp(“MENU”) CrossPlatformInputManager.GetButton(“CENTER”) CrossPlatformInputManager.GetButto

海涛高软 1767

Unity 热更新技术 | (二) AssetBundle - 完整系列教程学习

开始学习热更新方面系列知识,就从这一篇开始吧! 本系列教程 会从热更新基本概念出发,详细介绍热更新相关的全套知识点。 如热更新技术基本原理、热更新主流方案、AssetBundle系列教程、Lua语言编程、Lua与Unity交互教程、Xlua框架使用、热更新实战教程等方面。 热更新作为一个开发者必备技能,如果想学习的话,可以从现在开始了哦~ 接下来从 AssetBundle - 完整系列教程学习 开始学习吧!

努力前行,总会成为自己心中的那道光 1万+

Pico VR开发 之凝视

1、首先把Picovr的sdk导入到Unity 中-------在PicoMobileSDK/Pvr_UnitySDK/Prefabs/Pvr_UnitySDK预制体 2、把预制体拖放到场景中,之后创建一个 Canvas,吧Canvas的渲染模式(RenderMode)改为 World Space ,并为Event Camera 添加 Head的摄像机。 3、复制 预制体下面的 SightPo...

MMMeKey博客园 4007

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

unity3d手柄按键事件回调

/// 定义一个按键类.设置手柄按键

yanggenye的博客 2423

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Unity——暴风魔镜无法演示SDK所带Demo

Unity——暴风魔镜无法演示SDK所带Demo 问题 导入暴风魔镜插件,演示Demo里面的场景,出现!,然后Unity崩溃。 解决 设置图形api,重启Unity 温馨提示:安装Unity,最好退出360等防火墙,否则可能就出现一些奇怪的空白错误,卸载重新安装Unity后解决。 ...

weixin_43844944的博客 2088

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

上一篇: Unity下使用暴风魔镜SDK通过头部和手柄控制字体拼凑(一)
下一篇: Java关键字static小结
dly215011
博客等级 码龄12年 48粉丝 52原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值