iT邦幫忙

2021 iThome 鐵人賽

DAY 20
0
Mobile Development

從無到有! Unity AR手遊開發日誌-以山海異聞錄為例系列 第 20

Day 20 | 3D蛇走迷宮AR遊戲開發Part1 場景放置、平面偵測

目錄
遊戲機制
FBX檔匯入設定
建模放置、布置場景
偵測平面手動放置場景物件

遊戲機制

偵測到平面後,放置迷宮與小妖怪肥遺,操縱介面上的按鈕,幫助肥遺走出迷宮。

使用到的素材

肥遺(3D模型) 石頭(3D模型) 石頭(3D模型) 石頭(3D模型)
草(3D模型) 草(3D模型) 草(3D模型) 地板(3D模型)

FBX檔匯入設定

在之前的文章中有提到3D建模匯入專案的要點,其中提到FBX會打包3D建模的材質、貼圖等,在丟進Unity後,會發現檔案的材質是顯示none,如果丟進場景中,建模會顯示全灰白色,需要將材質從FBX檔提取出來才能使用。

在Project視窗中點擊FBX檔案,在視窗inspector中點選檔案的Material,點擊Extract Material,將材質從檔案中提取出來,儲存在存放材質的資料夾中。

原本顯示沒有None Material的建模,材質會自動被放到建模上,這時候建模物件就會正常顯示了。

建模放置,場景布置

遊戲開始時,會將場景包含要操作的肥遺、介面、布景,手動放置到平面上,所以須將所有的物件打包成一個Prefab後一次放置。ARCore與ARKit套件,在AR世界是以公尺為單位,在美術製作建模時,如果物件大小設定為1公尺,且在Unity當中Scale為1,在鏡頭裡物件就會以1公尺呈現在環境中。

需事先與美術溝通好尺寸,方便之後進入Unity布置時可以做調整。布置迷宮時,擺放物件,間隔、大小不一,可以更自然呈現。擺放注意迷宮的Rotation以及Scale,基本上就沒甚麼問題了。迷宮、肥遺、介面都布置好以後,放入Empty Object裡頭,最後製作成一個Prefab,之後方便擺放在鏡頭中。

偵測平面手動放置場景物件

在之前的小遊戲中,有提到過平面偵測,這次一樣也需要添加AR PlaneManager元件,但改由手動放置物件。

  • 宣告一個bool變數,用來記錄是否可手動放置,避免重複放置物件
  • Input.touchCount > 0 判斷是否有螢幕接觸
  • Input.GetTouch(0).phase == TouchPhase.Began 判斷手指剛觸摸到屏幕的時候
  • 最後只要放置過物件後,就把放置器關掉囉!
void Update()
{
    
    if(Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began){
    List<ARRaycastHit> hits = new List<ARRaycastHit>();
    raycastManager.Raycast(Input.GetTouch(0).position, hits, UnityEngine.XR.ARSubsystems.TrackableType.Planes);
    if (hits.Count > 0)
        {
            GameObject.Instantiate(obiectToPlace, hits[0].pose.position, hits[0].pose.rotation);
            gameObject.SetActive(false);
        }
    }
    
    
    
}

以上就是手動放置迷宮場景實作部分,那之後就會進入蛇的移動囉,我們明天見~


上一篇
Day 19 | FPS滅火AR遊戲開發Part4 - 噴水、滅火
下一篇
Day 21 | 3D蛇走迷宮AR遊戲開發Part2 -角色蛇移動
系列文
從無到有! Unity AR手遊開發日誌-以山海異聞錄為例30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言