Unity AR Vuforia(拓展)——Vuforia圖檔識别超詳細案例(小島動畫互動)【含代碼】
文章目錄
- Unity AR Vuforia(拓展)——Vuforia圖檔識别超詳細案例(小島動畫互動)【含代碼】
-
- 1.環境搭建
- 2.資源導入
- 3.互動之旋轉 & 附加代碼
- 4. Making Animator
- 5.試運作導出APK
- 6.使用安卓手機下載下傳安裝及可能出現的問題
- 7.适用的機型及問題的解決方法
- 8.效果展示
1.環境搭建
環境搭建,包括Vuforia官網的注冊登入,密鑰擷取,在Unity中對Vuforia Engine AR插件的安裝等等
這裡是在Unity中對Vuforia Engine AR插件的方法https://blog.csdn.net/m0_57495651/article/details/128107903
這裡是環境搭建需要完成的其他步驟:https://blog.csdn.net/m0_57495651/article/details/128108242
2.資源導入
我已經在我的個人首頁資源中上傳(名稱同本文章标題)
将FBX檔案導入Unity
3.互動之旋轉 & 附加代碼
(1)Create C# Script
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class rotate : MonoBehaviour {
float xSpeed = 150.0f;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (Input.GetMouseButton(0))
{
if (Input.touchCount == 1)
{
if (Input.GetTouch(0).phase == TouchPhase.Moved)
{
transform.Rotate(Vector3.up * Input.GetAxis("Mouse X") * -xSpeed * Time.deltaTime, Space.World);
}
}
}
}
}
(2)再Create C# Script
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class enlarge : MonoBehaviour {
Vector2 oldPos1;
Vector2 oldPos2;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (Input.touchCount == 2)
{
if (Input.GetTouch(0).phase == TouchPhase.Moved || Input.GetTouch(1).phase == TouchPhase.Moved)
{
Vector2 tempos1 = Input.GetTouch(0).position;
Vector2 tempos2 = Input.GetTouch(1).position;
if (isEnlarge(oldPos1, oldPos2, tempos1, tempos2))
{
float oldScale = transform.localScale.x;
float newScalse = oldScale * 1.025f;
transform.localScale = new Vector3(newScalse, newScalse, newScalse);
}
else
{
float oldScale = transform.localScale.x;
float newScalse = oldScale / 1.025f;
transform.localScale = new Vector3(newScalse, newScalse, newScalse);
}
oldPos1 = tempos1;
oldPos2 = tempos2;
}
}
}
//判斷手勢
bool isEnlarge(Vector2 oP1,Vector2 oP2,Vector2 nP1,Vector2 nP2)
{
float length1 = Mathf.Sqrt((oP1.x - oP2.x) * (oP1.x - oP2.x) + (oP1.y - oP2.y) * (oP1.y - oP2.y));
float length2 = Mathf.Sqrt((nP1.x - nP2.x) * (nP1.x - nP2.x) + (nP1.y - nP2.y) * (nP1.y - nP2.y));
if (length1 < length2)
{
return true;
}
else
{
return false;
}
}
}
4. Making Animator
由于内容過于簡單不進行圖文描述
【讀者也可跳過此步驟,上述步驟3的代碼互動旋轉亦可實作,
此步驟是制作動畫狀态機,不制作動畫狀态機項目也可以正常運作,
不會産生任何影響】
提醒:讀者Making Animator後,記得将狀态機挂載至對象上
5.試運作導出APK
【以下内容源自我的第二篇文章(02圖檔識别教程)6——8步驟】
不了解的讀者可以點選【02】2022.11最新超詳細Vuforia圖檔識别教程此連結學習6——8步驟,也可繼續閱讀下面内容學習,一模一樣的,請放心學習!
點選如下圖所示,File——Building Settings

選擇安卓平台
選如下圖所示紅框(Switch Platform)選擇該安卓平台
選擇【Build】
因為是第一次導出APK,會比較慢!請耐心等待!别急!會成功的!
進度條走完後,彈出框如下圖所示
(自行命名,我比較喜歡以時間命名來區分,現在是2022.11.27,我就以今天命名了,讀者可以自由命名)
命名完後,點選【儲存】
接下來,找到我們剛剛導出的APK,将APK發送到安卓手機上。
6.使用安卓手機下載下傳安裝及可能出現的問題
安卓手機接收到APK後,點選接收,再點選安裝
這裡提醒一下:安卓手機首次安裝該apk,會被要求谷歌下載下傳一個東西,根據提示放心下載下傳!!!後面我們做項目将apk導入安卓手機時就不會彈出來了
安裝後打開對着剛剛添加的Image,即可看到效果(我們Image Target下面的物體)
注意:這裡分享一下常見問題
(1)手機無法安裝
(2)點開後黑屏
7.适用的機型及問題的解決方法
(1)适用機型:小米,OPPO, VIVO ,iQOO,一加,聯想等安卓手機均可實作
(2)上述兩個問題的解決方法:
A1:手機無法安裝:IOS系統和華為手機無法使用、含手機管家的需要關閉或不讓其掃描或不開啟安全安裝,選擇直接安裝
A2:點開後黑屏:沒有開啟攝像頭權限
8.效果展示
上述的部分内容源自我的第一篇,第二篇文章中。本文提煉了案例的主幹内容,但是所有步驟都已經寫明,且當時本文引用的出處已經标記了引自我的哪篇文章哪幾個步驟,學習起來也很友善的!
【01】如何在Unity 中 安裝 Vuforia Engine AR 插件?(附加檢驗安裝成功方法) https://blog.csdn.net/m0_57495651/article/details/128107903
【02】2022.11最新超詳細Vuforia圖檔識别教程https://blog.csdn.net/m0_57495651/article/details/128108242