手部识别已经基本完成。经过测试发现,只要所在的环境够亮,能够照的双手颜色比较稳定(偏白),识别效果就会比较好。
队友部分,虚拟键盘也根据我们实际使用的实体键盘制作完成了。根据实体键盘的按键不同,虚拟键盘会有不同的响应。整个过程就是,摄像头识别手指,将其位置映射到Canvas层中成为五个圆点,圆点实时反映手指的位置,帮助在VR环境中的使用者辨别自己手部究竟放置在键盘的哪一个位置上。
这部分基本实现之后,我接下去做的就是输出的部分。当键盘输入所需的文字之后,需要有一个展示的效果,暂定的内容是两种展示效果。(一)弹幕飞过的展示效果(二)存储在某个文件当中,可以实时查看的展示效果。
首先介绍弹幕飞过的展示效果,主要思路如下:
需要创造一个飞过的弹幕,即在玩家输入对应的文字的时候,产生一个Text组件,并且设置Text组件的文字内容为InputFiled中输入的文字。当这个组件产生完成之后,将其初始位置设定在显示范围之外,并且设定一个初速度,让其从屏幕中飘过。飘出显示范围之后,立即将其销毁,防止因为弹幕过多造成的卡顿。
下面是详细的实现代码:
初始化的过程,设定好颜色、初始的位置。
//初始化
currentText = GetComponent<Text>();
//设置显示字体以及随机颜色
currentText.text = text;
currentText.color = Random.ColorHSV();
//获取屏幕范围内的y坐标随机,这里没做屏幕适配,free aspect举列
float y = Random.Range(-200f, 220f);
transform.localPosition = new Vector3(-550f, y, 0);
开始生成实例,开始飘动的过程:
if (speed != 0)
{
float x = transform.localPosition.x + speed * Time.deltaTime;
transform.localPosition = new Vector3(x, transform.localPosition.y, 1);
//出屏幕销毁
if (transform.localPosition.x >550f)
{
Destroy(gameObject);
}
}
这样,控制Text组件的代码就基本完成了。将Text组件设置成为一个预设体。方便每次的调用。
接下去就是对输入框的编