VR AR
===
###### tags: `school`
# 期末考
富緯好帥
一個主圖加一個按鈕
按鈕連結要按,然後去該連結 [20191225-3:](https://youtu.be/RWy14Q9UnNU)時間戳記往下翻
會給程式碼
一開畫面人出來(從小變大)魔法陣迴轉 [20191218-2:](https://youtu.be/q6Kt4xe_H5I)時間戳記往下翻
有音樂 [20191225-2:](https://youtu.be/A6C1Svk-LUU)
按下按鈕,有解釋出來 [20191225-1:](https://youtu.be/Lw0Yq57vfhk)
另一張按Youtube去Youtube [20191225-3:](https://youtu.be/RWy14Q9UnNU)時間戳記往下翻
魔法陣旋轉,人放大,線性 [20191218-2:](https://youtu.be/q6Kt4xe_H5I)時間戳記往下翻
# 2019/11/13(e)
[20191113-1:](https://youtu.be/py6hqJJilKc?t=1740)
影片前半只在看影片,所以不重要。
步驟只是個提醒,詳細還是看影片或許會比較快,時間做個方便告知
2017的版本喔~
- 29:00
- build setting -> android -> switch platform :這個動作再說將平台轉換到android
- project setting -> player -> XR Settings的Vuforia Augmented Realit(影片模糊大概差不多好像是這些單字) -> 跳出個選項按accept
- 記得要把main camera給刪掉喔 然後加入Vuforia的camera create->Vuforia ->AR camera
- 33:40~33:50
- 角色上色的部分
- 36:50
- 開始講述如何Vuforia的操作過程
- AR Camera ->Open Vuforia configuration ->Add License(Vuforia的連結)
- 42:45
- 在說明出現一個warning(Android TV) 解決方法 player setting->other settings的android TV Compatibility
- 然後記得把角色丟到imagetarget底下,不然不會動
==這個影片目前沒解決無法出現的問題==
> 這邊是不是怪怪的
> 這個我也不知道捏
20191113-1:
要在android上執行 步驟請從2:45開始看
這部影片都是在用android的問題 這個感覺不用特別在意的感覺?
# 2019/11/20(e) 4個圖片的
[20191120-1(聲音差評):](https://www.youtube.com/watch?time_continue=3&v=NB-n8_Txq2U&feature=emb_title)
- 07:30
- 將game的長寬比換為16:10Portrait(10:16) <-這個不是時間喔 是長寬比
- 10:00
- 在做4個圖片的配置,然後把他們擺到scene裡面,然後就一連串的動作,建議看影片比較快
[20191120-2:](https://www.youtube.com/watch?v=AatONpPQDog&feature=emb_title)
- 00:00
- 影片一開始就在設置了 設置左右按鈕的配置(不是button喔),調整好位置後,替物件加入MeshCollider
- 07:40
- 設置聲音 步驟:在scene新增 Audio->Audio Source
- 9:40
- 新增一個TSM 步驟:新增一個空物件(create empty,改名叫TSM)->新增 Trackable status Manager(Script)
- 16:00
- 新增了scene manager 步驟看影片比較快
[20191120-3:](https://www.youtube.com/watch?v=KNrZfDoFDZg&feature=emb_title)
步驟還蠻多的 自己看影片比較實在點 我幫忙標時間
- 00:28
- 對TSM新增collider
- 01:41
- 對Manager新增collider
- 08:25
- 對左右按鈕新增collider
# 2019/11/27(e)
家具日
他用2019做的 所以我不確定要不要標記東西 有要標記的話說一下
[20191127-1:](https://www.youtube.com/watch?v=8WFv_I_MSnA&feature=emb_title)
我沒看到重點 = =
[20191127-2:](https://www.youtube.com/watch?v=Pj-sTf1sxIQ&feature=emb_title)
- 19:40
- 虛擬按鈕
- 20:57
- 虛擬按鈕的材質
[20191127-3:](https://www.youtube.com/watch?v=4SZCGIClNCk&feature=emb_title)
- 7:10
- Script如有發生問題 解決bug方式
- 9:15
- 開始製作左右UI按鈕
# 2019/12/04(e)
也是用2019做的
[20191204-1:](https://www.youtube.com/watch?v=dKfkcn0jE5I&feature=emb_title)
[20191204-2:](https://youtu.be/-Rwdr5dhD2k)
# 2019/12/11
終於肯用2017了
[20191211-1:](https://youtu.be/4WD0pbTlgd0)
先下載好Business Card
- 08:30
- ==vuforia設定==
- vuforia target 新增
- vuforia網站 -> Target Manager -> Add Database
- 09:44
- ==Unity vuforia設定==
- File -> Build Setting -> Android -> Switch Platform
- Player Setting -> XR setting -> Vuforia Augmented Realit -> 打勾
- 13:15
- 把剛剛從vuforia下載的東西匯入
- 15:20
- 把Camera換成AR Camera
- Main Camera刪除
- Hierachy -> 右鍵 -> Vuforia -> AR Camera
- 17:08
- ==載入圖片==
- AR Camera -> Vuforia Behaviour -> Open Vuforia Configuration
- Add Licence -> 複製貼回來
- Databases -> Load 你的名字 Database -> 打勾 -> Activate -> 打勾
[20191211-2:](https://youtu.be/w_fkHXter9s)
- 01:15
- ==名片設定==
- Hierachy -> 右鍵 -> Vuforia -> Image (兩次)
- 分別取名 Target_Front 、 Target_Back
- Target_Front -> Image Target Behaviour -> Database -> 你的名字 (Back也一樣)
- Target_Front -> Image Target Behaviour -> Image Target -> Card1
- Target_Front -> Image Target Behaviour -> Image Target -> Card2
- 05:30
- 把Audio、FBX、Image、Script、Video摳進Assets -> Go Ahead
- 06:50
- Image資料夾內全選 -> Texture Type -> Sprite (2D And GUI)
- 11:30
- 把FBX內的模型設成Legacy之後拉進Target_Front裡面
- 13:23
- 把Animation丟進去
- 16:25
- ==魔法陣==
- 創造Plane取名Magic,拖進Target_Front裡
- 創造一個Meterial
- Shader -> Particles -> Addtive
- Particle Texture選擇Magic
[20191211-3:](https://youtu.be/qRgZ3SgaStw)
- 00:45
- 滾動文字
- 創建一個Panel取名 Introdution_Panel
- Canvas -> Canvas Scaler -> X:1920 Y:1080
- 創建一個Text取名 Introdution_Text 並將它拖到Introdution_Panel底下
- Introdution_Text -> Inspertor
- 物件靠上對齊
- Pivot Y: 1
- Pos Y: -160
- Height: 625
- Text內容複製貼上
- 文字上下置中
- 在Introdution_Panel底下創建Image取名 Introdution_Mask
- 把Introdution_Text拉到Introdution_Mask底下
- Introdution_Mask -> Inspertor
- Width: 660
- Height: 200
- Add Component -> Mask
- Image -> Color -> A:1
- Introdution_Text -> Inspertor -> Pos Y: 0
# 2019/12/18
[20191218-1:](https://youtu.be/KL4nNOzZf3s)
- 00:15
- 新增3個 UI-> button 分別取名 SoundOpen_btn,SoundClose_btn,PlaneClose_btn
- 01:45
- 對SoundOpen_btn,SoundClose_btn,PlaneClose_btn 設定圖示 Image(Script) 的 SourceImage 分別改為他們所要的圖示
- 對SoundOpen_btn,SoundClose_btn 的 Button(Script) 的 Transition 改為 Sprite Swap
- 對PlaneClose_btn 的 Button(Script) 的 Transition 改為 None
- 要改它們的位置喔 影片都有說
- 13:10
- 新增 UI -> Button 取名 Introduction_btn
- 設定位置
- 17:00
- 新增3個 UI -> Button 取名 MoviePlay_btn,Youtube_btn,FB_btn
- 步驟跟上面01:45雷同
- 位置請參照影片所述
[20191218-2:](https://youtu.be/q6Kt4xe_H5I)
- 00:50 這邊開始是人物的大小縮放
- 開始製作人物放大的動畫
- 新增一個空物件 create Empty 取名叫 LearnGo
- 放在Target_Front底下 -> reset position
- 再把再把LearnGo_wave變成他的子物件
- 03:18
- 對LearnGo 新增 Animation
- window -> Animation -> create -> LearnGo.anim(取名取看得懂的,分辨得出來的)
- 錄製打開(紅色那顆) -> Add Property -> Transform -> Scale +
- 在0.00的地方更改他們的大小 scale.x,scale.y,scale.z 更改為0
- 這樣就有放大的效果囉
- 06:22
- 透過按下按鈕讓動畫產生(我感覺的意思是這樣啦
- 在LearnGo的amimator 新增 一個empty create state -> empty
- 更改線的連接 entry連到new state 在New State -> Set as layer default state
- 08:12
- New State 右鍵 Make Transition 到 LearnGo
- 在左邊的Parameter新增Bool,取名叫Open
- 再新增一個Bool,名為Close 大小寫多少注意一下
- 在New State與 LearnGo之間的線做設定
- 把Has Exit Time 關掉
- 下面的condition 新增(按+) Open true
- 12:33
- 有說明F鍵能幹嘛 (考試不會考F鍵喔,只是看你會不會用到罷了
- LearnGo 右鍵 Make Transition 到 Exit
- 針對他們的線去設定 Has Exit Time 關掉
- 下面的condition 新增(按+) Close true
- 14:30 現在開始是魔法陣的喔
- 對Image(魔法陣的名字) 新增Animation
- window -> Animation -> create -> Magic.anim(取名取看得懂的,分辨得出來的)
- 錄製打開(紅色那顆) -> Add Property -> Transform -> Rotation +
- 針對 Rotation y 去做更改 在0.00的地方設為0 後面的地方設置為359
- 20:42 線性的部分囉 就是曲線改為直線喔
- 在animation 下面有個 C啥啥ves的咚咚 進去裡面修改 (我看影片看不清楚他叫甚麼
- 再LearnGo的animation 去修改 到 C啥啥ves的咚咚 這個時間他調整的是角色的,魔法陣的在下禮拜的第一個影片
- 在曲線的兩個端點 分別按右鍵 ->Both Tangents -> Linear
# 2019/12/25
[20191225-1:](https://youtu.be/Lw0Yq57vfhk)
- 01:50
- 更改Magic(魔法陣的名字)的animation 的 C啥啥ves的咚咚
- 跟上次一樣的方式去進行修改
- 在曲線的兩個端點 分別按右鍵 ->Both Tangents -> Linear
- 10:00
- 文字的動畫
- Introduction_Text 的 animation
- window -> Animation -> create -> Introductino_Open.anim(取名取看得懂的,分辨得出來的)
- 錄製打開(紅色那顆) -> Add Property -> Rect Transition -> Anchored Position
- 這邊的步驟跟前面差不多 只是細節看影片 也要去調整線性
- 19:35
- 開啟Introduction_Open的animator
- 新增 一個empty create state -> empty
- entry連到new state 在New State -> Set as layer default state
- New State 右鍵 Make Transition 到 Introduction_Open
- 在左邊的Parameter新增Bool,取名叫Open
- new state 與 Introduction_Open 的 線 Has Exit Time 關掉
- 下面的condition 新增(按+) Open true
- Introduction_Open 與 exit 之間的線 Has Exit Time 關掉
[20191225-2:](https://youtu.be/A6C1Svk-LUU)
- 00:25
- 新增一個Audio Source create -> Audio -> Audio Source 取名叫AudioPlayer
- Play On Awake關掉
- 複製AudioPlayer 改名叫 SoundEffectPlayer
- 03:55
- 新增一個空物件 create - > create Empty 取名叫 TSM_front
- 座標歸零
- 加入一個Script Trackable status Manager(Script) Add Component -> Trackable status Manager(Script)
- Target_Front拉過去到裏頭的Target
- 新增一個空物件 create - > create Empty 取名叫 TSM_back
- 座標歸零
- 加入一個Script Trackable status Manager(Script) Add Component -> Trackable status Manager(Script)
- Target_Back拉過去到裏頭的Target
- 10:55
- 新增一個空物件 create - > create Empty 取名叫 Manager
- 加入一個Script UI Manager(Script) Add Component -> UI Manager
- 在script上設定 這個好多 你看影片吧
- 17:41
- 在Manager新增一個 Audio Manager(Script) Add Component -> Audio Manager
- 裏頭細節麻煩看一下影片吧
- 20:29~20:35
- 有在Manager的UI Manager 中的AM放入Manager本身喔 提醒一下
- 20:48
- TSM_front 新增一個 AudioPlayer(Script) Add Component -> AudioPlayer
- 細節依舊看影片
- 24:45
- 在Introduction_btn 新增事件
- 詳情請觀看影片
- 38:00
- 在SoundOpen_btn 新增事件
- 在SoundClose_btn 新增事件
- 在PlaneClose_btn 新增事件
- 上述詳情請觀看影片
[20191225-3:](https://youtu.be/RWy14Q9UnNU)
- 00:20
- SoundOpen_Btn,SoundClose_Btn 做設定
- 設定內容請參照影片
- 記得SoundClose_Btn 記得把Image的勾勾拿掉,讓他預設為不顯示
- 07:30
- 對Introduction_Btn 新增一個Script Single UI Switch(Script) Add Component -> Single UI Switch
- 再把TSM_front拉到Script Single UI Switch 的 TSM
- 接著再對Introduction_Btn 再新增一個新的事件
- 設定哪些看影片吧
- 11:00
- 再對PlaneClose_Btn 新增事件
- 細節依舊看影片
- 12:33
- 對TSM_front 新增一個 Animation Manager
- 內容設定參照影片
- 15:38
- unity 影片不能直接放在assests/video裡面
- 要放在StreamingAssests裡面喔
- 看影片步驟最清楚了
- 16:50
- 對Manager新增一個Script Video Manager(Script) Add Component -> Video Manager
- 然後就細節看影片
- 19:45
- 對MoviePlay_Btn加事件
- 細節看影片
- MoviePlay_Btn 新增一個Script Single UI Switch(Script) Add Component -> Single UI Switch
- 這個的TSM是選TSM_back喔
- 24:23
- Youtube_btn 新增一個Script Single UI Switch(Script) Add Component -> Single UI Switch
- TSM選的是TSM_back
- Youtube_btn 新增一個Script Open Url(Script) Add Component -> Open Url
- 再URL上 貼上一個Youtube連結
- Youtube_btn 新增事件
- 設定看影片
- 25:40
- FB_btn 的做法跟 Youtube_btn 差不多
- 後面就沒什麼東西的樣子了
C#
===
## C# 場景轉換
```csharp=
using UnityEngine.SceneManagement;
public void Start_button(){
SceneManager.LoadScene("Scene Name");
}
```
## C# 人物前進後退
```csharp=
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BoyControl : MonoBehaviour {
public float speed = 10f;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
float hDistance = speed * Time.deltaTime * Input.GetAxis("Horizontal");
float vDistance = speed * Time.deltaTime * Input.GetAxis("Vertical");
transform.Translate (Vector3.right * hDistance, Space.World);
transform.Translate (Vector3.forward * vDistance, Space.Self);
}
}
```
## C# 點button圖片變換(Image、RawImage)
```csharp=
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class BtnClick : MonoBehaviour {
private int iTime = 0;
public Button pressButton;
public Text textButton;
public Text ValueText;
private bool bShow = false;
public Image Image1;
public RawImage Image2;
public Sprite ImageFor11;
public Sprite ImageFor12;
public Sprite ImageFor13;
public Sprite ImageFor14;
private Sprite[] imagesAry = new Sprite[4];
public Texture ImageFor2;
// Use this for initialization
void Start () {
textButton = pressButton.GetComponentsInChildren<Transform> () [1].GetComponent<Text> ();
textButton.text = "Show";
imagesAry [0] = ImageFor11;
imagesAry [1] = ImageFor12;
imagesAry [2] = ImageFor13;
imagesAry [3] = ImageFor14;
}
// Update is called once per frame
void Update () {
}
public void ButtonClick(){
ValueText.text = (++iTime).ToString();
if (bShow) {
// Image1.sprite = null;
Image2.texture = null;
textButton.text = "Show";
} else {
// Image1.sprite = ImageFor11;
Image2.texture = ImageFor2;
textButton.text = "Hide";
}
bShow = !bShow;
Image1.sprite = imagesAry [(iTime - 1) % 4 ];
// switch ((iTime-1) % 4) {
// case 0:
// Image1.sprite = ImageFor11;
// break;
// case 1:
// Image1.sprite = ImageFor12;
// break;
// case 2:
// Image1.sprite = ImageFor13;
// break;
// case 3:
// Image1.sprite = ImageFor14;
// break;
// }
}
}
```
# Dark Theme CSS
{%hackmd theme-dark %}