作业十一

虚拟按键小游戏

  • 图片识别与建模
  • 虚拟按键的使用

图片识别与建模

  • 首先,我们在vuforia网站上进行注册登录,然后创建证书,用于获取License Key:
    作业十一_第1张图片
    作业十一_第2张图片
  • 创建目标数据库,用于对所有Target及其特征数据进行管理和保存。然后我们选择一副图片,进行特征识别:
    作业十一_第3张图片
    此处,可以看见识别之后给该图片打分是五颗星,说明识别效果比较不错。
  • 然后创建Unity新项目,并开启Vuforia AR 支持:
    作业十一_第4张图片
  • 在Vuforia官网中下载Unity扩展包并导入项目中,并以unity package形式从Target Manger页面下载目标数据库并导入项目
    作业十一_第5张图片
    作业十一_第6张图片
  • 删除场景中原有的摄像机,并拖入Vuforia的ARCamera预制体,此时运行项目,可以看到场景为摄像头实景
    在这里插入图片描述
  • 从ARCamera的检视面板中打开Vuforia配置文件,将证书管理器中获取的Key写入配置文件同时激活相应数据集
    作业十一_第7张图片
  • 导入database,先从网站中把自己创建的数据库下载下来,再import进项目即可。这里导入数据库之后同步即可,不需要再进行其他的设置。(其已经自动添加进去了)
    作业十一_第8张图片
  • 将准备好的龙模型挂载到ImageTarget下作为子对象,调整模型大小后运行项目,结果如下:
    作业十一_第9张图片
    我们可以在ARCamera之下看到龙模型
  • 实际运行效果
    作业十一_第10张图片

虚拟按键的使用

  • 在ImageTarget中的Advanced部分,可以直接添加虚拟按钮,这里我们添加两个虚拟按钮:
    作业十一_第11张图片
  • 为了之后的脚本控制方便,我们这里给两个按钮分别进行命名:
    在这里插入图片描述
    在这里插入图片描述
  • 给两个按钮都挂载一个子平面,使得其可以被看见:
    作业十一_第12张图片
  • 设置子平面的大小和位置,整个部分的效果如下所示:
    作业十一_第13张图片
  • 注册按钮响应事件
    为了实现虚拟按钮与人物动画之间的控制关系,我们需要为 ImageTarget 添加 VirtualButton 脚本。首先,在 Start 函数中,我们需要获取 ImageTarget 组件中所有的虚拟按钮对象,然后依次对每个按钮注册按钮响应事件:
// Start is called before the first frame update
void Start()
{
    var vbs = GetComponentsInChildren<VirtualButtonBehaviour>();
    for (int i = 0; i < vbs.Length; ++ i)
    {
        vbs[i].RegisterOnButtonPressed(OnButtonPressed);
        vbs[i].RegisterOnButtonReleased(OnButtonReleased);
    }
}

当 ButtonPressed 事件被触发时,会调用 OnButtonPressed 函数,我们根据之前定义好的虚拟按钮名称,实现不同控制逻辑。

public void OnButtonPressed(VirtualButtonBehaviour vb)
{
    if (vb.VirtualButtonName == "button1")
    {
        ani.gameObject.transform.position += new Vector3(1, 0, 0);
    }
    else
    {
        ani.gameObject.transform.position += new Vector3(-1, 0, 0);
    }
    Debug.Log(vb.VirtualButtonName);
}

完成逻辑之后,将脚本挂载到 ImageTarget上,即可实现对按钮触碰事件的相应。此时,已经可以根据虚拟按键来实现飞龙的上升和下降过程。

你可能感兴趣的:(作业十一)