AR制作原來這么簡(jiǎn)單

Jyadmin 提交于 周一, 12/19/2022 - 13:45

?

安卓環(huán)境配置

我們的項(xiàng)目完成后將運(yùn)行在安卓移動(dòng)設(shè)備上,所以我們先將平臺(tái)配置好

1.?File?-> Build Setting ->?勾選Android?-> Switch Platform

2.?然后點(diǎn)擊Player Setting?->?Other Setting -> Color Space,選為Gamma模式。取消勾選Android TV Compatibility

3.?XR Setting -> 勾選Vuforia Augmented Reality Support

AR制作

?

創(chuàng)建工程

1.?將SampleAssets.unitypackage導(dǎo)入

2.?打開一個(gè)新場(chǎng)景,刪除Directional Light

3.?到Project > SampleAssets > Complete >

? ? Prefabs文件夾,把LevelArt拖入Hierarchy窗口。這樣可以讓 LevelArt 處于(0,0,0)坐標(biāo),以便基于世界坐標(biāo)來烘焙(bake)NavMesh(刪除Directional Light是因?yàn)镾andbox已經(jīng)有一盞Directional Light了)

4.?保存場(chǎng)景

AR制作

?

Tags and Layers 介紹

1.?Tags 用于標(biāo)注項(xiàng)目中的物體

2.?Sorting Layers ?2d系統(tǒng)中Sprite的顯示層級(jí)

3.?Layers用于創(chuàng)建具有某些相同特征的物體

常用于相機(jī)分層顯示,射線檢測(cè)等功能

打開Edit->Project Settings->Tags and Layers->添加 Actor

AR制作

?

光照和陰影設(shè)置

1.?打開Window > Rendering >Lighting > Sce ? ? ne窗口, 取消Auto Generate, 取消Mixed Li ? ? ghting > Baked Global Ilumination

2.?在Environment > Environment Lighting > Source, 改為Color, 顏色改為紫色

3.?接下去我們要修復(fù)陰影, 因?yàn)楝F(xiàn)在拉遠(yuǎn)了看, Zoom In/Zoom Out的時(shí)候, 當(dāng)前的陰影會(huì)消失. 這是由于Shadow Distance太小了

4.?到Edit > Project Settings > Qality, 把Shadow Distance改為300

?

場(chǎng)景、腳本設(shè)置

1.?到Project > SampleAssets > Prefabs > Co ? ? mplete 文件夾,把Player、AITank拖入Hier ? ? archy窗口

·彈藥設(shè)置

①?在Project > SampleAssets > Prefabs > Complete中點(diǎn)擊AxeShell,掛載Shell腳本

②?點(diǎn)擊預(yù)制體右側(cè)小三角形展開,將ShellExplosion拖動(dòng)到ExplosionAudioSource和ExplosionParticles中,ExplosionRadius設(shè)置為3,DamageMask設(shè)置為Actor,勾選IsRotate

③?另一Shell使用相同方法,參數(shù)相同,不勾選IsRotat

AR制作

?

Player設(shè)置

1.?在Project > SampleAssets > Scripts中找到PlayerController和PlayerCharacter腳本,掛載到Player上

2.?掛載的腳本上屬性值都為空,需要手動(dòng)設(shè)置

3.?Speed:8 Turn Speed:18 LaunchForce:10 Health:100 Attack Time:0.6

4.?在Hierarchy中的Player展開,對(duì)應(yīng)名稱將Muzzle、ShootAudioSource、Explosion拖動(dòng)到Inspector的屬性中

5.?展開HPCanvas下的所有對(duì)象,將Slider拖動(dòng)到Health Slider,F(xiàn)ill添加到HealthFillImage

6.?到Project > SampleAssets > Prefabs > Complete 文件夾,把AxeShell拖入Shell中

AR制作

?

AITank設(shè)置

1.?在Project > SampleAssets > Scripts中找到AIController和PlayerCharacter腳本,掛載到AITank上

2.?Speed:8 Turn Speed:0 LaunchForce:10 Health:100 Attack Time:0

3.?在Hierarchy中的Player展開,對(duì)應(yīng)名稱將Muzzle、ShootAudioSource、Explosion拖動(dòng)到Inspector的屬性中

4.?展開HPCanvas下的所有對(duì)象,將Slider拖動(dòng)到Health Slider,F(xiàn)ill添加到HealthFillImage

5.?到Project > SampleAssets > Complete > Prefabs文件夾,把Shell拖入Shell中

AR制作

?

導(dǎo)航設(shè)置

1.?在Hierarchy > LevelArt中將除了光照以外的物體選中,按住Ctrl多選,在右側(cè)Inspector勾選Static > Yes,Change the Children

2.?菜單欄Windows > Navigation,在右側(cè)會(huì)出現(xiàn)Navigation面板

3.?將MaxSlope設(shè)置為0,點(diǎn)擊Bake,界面中的網(wǎng)格就是Tank可以行走的區(qū)域

AR制作

?

應(yīng)用AR

AR制作

1.?在Hierarchy窗口中右鍵 Vuforia> 添加ARCamera、Image ,ImageTarget的Positions Y設(shè)為-0.01,Scale設(shè)置為100

2.?在ImageTarget下創(chuàng)建空物體,修改名字為Arena,將Player、LevelArt、AITank置為它的子物體

3.?選中Imagetarget,點(diǎn)擊DefaultTrackableEventHandler腳本編輯

4.?添加公共變量public GameObject Arena;

在OnTrackingFound末尾添加Arena.SetActive(true);

在OnTrackingLost末尾添加Arena.SetActive(false);保存代碼

5.?在Inspector中將Hierarchy中的Arena賦給變量Arena,這樣就是為了追蹤到目標(biāo)就顯示游戲場(chǎng)景,丟失目標(biāo)就消失

?

EasyTouch插件

1.?導(dǎo)入EasyTouch插件,檢查Console面板是否報(bào)錯(cuò)

2.?在Hierarchy面板右鍵,EasyTouch > EasyTouch,分別添加EasyTouchController > InputManager、JoyStick、Button

3.?選中JoyStick,修改在UI上的位置,更改名字為Move,展開Axes properties,勾選Turn&Move direction Action > 勾選Auto link to tag。

4.?展開Move Events,點(diǎn)擊OnMoveStart()右下角點(diǎn)擊+,將Hierarchy中的Player添加到None,NoneFunction > PlayerCharacter > Move(),在OnMoveEnd()中使用相同操作添加Move()

5.?更改Button名字為Fire,修改UI,放置在合適的位置

6.?展開Events,點(diǎn)擊OnDown()右下角+,將Hierarchy中的Player添加到None,NoneFunction > PlayerCharacter > Fire()

AR制作

?

更改朝向

1.?點(diǎn)擊菜單欄Unity > Build Setting

2.?在Resolution and Presentation > Orientation中將Default Orientation改為L(zhǎng)andScape Left

?

至此,我們的項(xiàng)目已經(jīng)完成好了,打包發(fā)布看看效果吧

AR制作