1. ภาพรวม
ARCore คือเฟรมเวิร์กของ Google สำหรับการสร้างประสบการณ์ Augmented Reality ในสมาร์ทโฟน คุณใช้ AR Foundation ของ Unity เพื่อสร้างแอปพลิเคชัน AR ข้ามแพลตฟอร์มได้
สิ่งที่คุณจะสร้าง
ในโค้ดแล็บนี้ คุณจะได้สร้างเกมง่ายๆ โดยใช้ AR Foundation เป้าหมายของเกมคือการเก็บพัสดุโดยใช้รถยนต์ที่คุณควบคุมด้วยอุปกรณ์พกพา
แต่จะไม่เกิดขึ้นในโลกเสมือนจริงอย่างแน่นอน คุณจะผสมอะตอมทางกายภาพและบิตดิจิทัลเพื่อสร้างประสบการณ์การเล่นเกมรูปแบบใหม่ด้วยการสร้างเกมที่เข้าใจสภาพแวดล้อมรอบตัวผู้เล่น
เมื่อสิ้นสุดโค้ดแล็บนี้ เกมของคุณจะทำสิ่งต่อไปนี้ได้
- ตรวจจับระนาบในโลกจริงและวาดสนามแข่งขันทับระนาบนั้น
- ยิงรังสีจากมุมมองของกล้องและตรวจหาจุดตัดกับระนาบ
- ตอบสนองต่อสภาพแสงในโลกจริงเพื่อเพิ่มความสมจริงให้กับเกม

สิ่งที่คุณจะได้เรียนรู้
- วิธีตั้งค่าโปรเจ็กต์ที่ใช้ AR Foundation ของ Unity
- วิธีใช้
ARPlaneManagerเพื่อสมัครใช้บริการแพ็กเกจใหม่ - วิธีใช้
Raycastเพื่อค้นหาจุดตัดที่มีรูปทรงเรขาคณิตเสมือน - วิธีใช้
ARLightEstimationDataเพื่อให้แสงสว่างในฉาก
สิ่งที่คุณต้องมี
- อุปกรณ์ ARCore ที่รองรับซึ่งเชื่อมต่อกับคอมพิวเตอร์สำหรับการพัฒนาซอฟต์แวร์โดยใช้สาย USB
- บริการ Google Play สำหรับ AR 1.23 ขึ้นไป
- การติดตั้ง Unity Hub หรือ Unity 2020 LTS
2. ตั้งค่าสภาพแวดล้อมในการพัฒนาซอฟต์แวร์
ในขั้นตอนนี้ คุณจะต้องเตรียมสภาพแวดล้อมให้พร้อมสำหรับการพัฒนาด้วย AR Foundation ของ Unity
ตรวจสอบว่าอุปกรณ์ของคุณรองรับ AR
ประสบการณ์ AR บนอุปกรณ์ Android ขับเคลื่อนโดย ARCore ซึ่งพร้อมใช้งานในอุปกรณ์ที่รองรับ ARCore ตรวจสอบว่าอุปกรณ์ที่ใช้พัฒนาเข้ากันได้กับ AR หรือจะใช้อินสแตนซ์โปรแกรมจำลอง Android ที่รองรับ AR ซึ่งกำหนดค่าอย่างถูกต้องก็ได้
ตั้งค่าการแก้ไขข้อบกพร่อง USB ในอุปกรณ์
คุณจะต้องเปิดใช้ตัวเลือกสำหรับนักพัฒนาซอฟต์แวร์ในอุปกรณ์เพื่อเรียกใช้แอปแก้ไขข้อบกพร่อง หากยังไม่ได้ดำเนินการ โปรดดูเอกสารประกอบของ Android เกี่ยวกับการเปิดใช้ตัวเลือกสำหรับนักพัฒนาแอปและการแก้ไขข้อบกพร่อง USB
ติดตั้ง Unity (2020.3 LTS)
ติดตั้ง Unity 2020 LTS ในเวิร์กสเตชัน ใน Codelab นี้ ภาพหน้าจอของ UI ของ Unity จะแสดงในเวอร์ชัน 2020.3 (LTS) Unity เวอร์ชันอื่นๆ อาจใช้งานได้ แต่คุณอาจต้องทำตามขั้นตอนเพิ่มเติม โดยอาจมีลักษณะแตกต่างจากภาพหน้าจอที่แสดงที่นี่
สร้างโปรเจ็กต์ใหม่
สร้างโปรเจ็กต์ใหม่โดยใช้เทมเพลต Universal Render Pipeline ตั้งชื่อที่สื่อความหมายและเลือกตำแหน่งที่เหมาะสม แล้วกดสร้าง

ติดตั้งเฟรมเวิร์กที่จำเป็น
คุณจะพบ AR Foundation ของ Unity ได้ใน Unity Package Manager
- เปิดโดยคลิกหน้าต่าง > Package Manager

- ในหน้าต่างนี้ ให้ติดตั้งแพ็กเกจที่คุณจะใช้ในโค้ดแล็บนี้ ดูเฟรมเวิร์กเวอร์ชันล่าสุดได้โดยขยายรายการโดยใช้ไอคอน
►ติดตั้งเฟรมเวิร์กแต่ละรายการต่อไปนี้ในเวอร์ชันล่าสุด- AR Foundation
- ปลั๊กอิน ARCore XR
เมื่อเสร็จแล้ว Package Manager ควรมีลักษณะดังนี้

ติดตั้งแพ็กเกจเริ่มต้น
สำหรับ Codelab นี้ เราได้จัดเตรียมแพ็กเกจเริ่มต้นที่มี Prefab และสคริปต์ที่จะช่วยเร่งกระบวนการบางส่วนของ Codelab เพื่อให้คุณมุ่งเน้นไปที่วิธีใช้ AR Foundation ได้
- ติดตั้งแพ็กเกจเริ่มต้นโดยเปิดชิ้นงาน > นำเข้าแพ็กเกจ > แพ็กเกจที่กำหนดเอง... แล้วเปิด
starter-package.unitypackage - ตรวจสอบว่าได้เลือกทุกอย่างในหน้าต่างที่ปรากฏขึ้น
- คลิกนำเข้า
เปลี่ยนการตั้งค่าการสร้าง
เนื่องจากแอปพลิเคชันจะทำงานบน Android ให้เปลี่ยนแพลตฟอร์มการสร้างเป็น Android โดยทำดังนี้
- เปิดไฟล์ > การตั้งค่าการสร้าง
- ในแผงแพลตฟอร์ม ให้เลือก Android
- ไม่บังคับ: เปิดใช้บิลด์สำหรับนักพัฒนาซอฟต์แวร์และการแก้ไขข้อบกพร่องของสคริปต์เพื่อเก็บข้อมูลการแก้ไขข้อบกพร่องขณะที่แอปทำงาน
- คลิกเปลี่ยนแพลตฟอร์ม

เปลี่ยนการตั้งค่าโปรเจ็กต์
ต้องกำหนดค่า AR Foundation เพื่อเริ่มต้นระบบ XR เมื่อเริ่มต้น
- เปิดแก้ไข > การตั้งค่าโปรเจ็กต์... แล้วคลิกส่วนการจัดการปลั๊กอิน XR
- ในแท็บ Android ให้เปิดใช้ ARCore

- คลิกส่วนผู้เล่นในแผงด้านซ้าย
- ในแท็บ Android ให้นำ Vulkan ออกจาก Graphics API ในส่วนการตั้งค่าอื่นๆ

- แอปที่ต้องใช้ AR ซึ่งใช้ ARCore ต้องมี API ระดับ 24 เป็นอย่างน้อย เลื่อนลงแล้วค้นหาระดับ API ขั้นต่ำ ตั้งค่าระดับ API ขั้นต่ำเป็น 24

เพิ่มองค์ประกอบฉากที่จำเป็น
เทมเพลต Universal Render Pipeline มาพร้อมกับออบเจ็กต์เกมบางอย่างที่คุณไม่ได้ใช้ในบทแนะนำนี้
- ลบออบเจ็กต์เกมทั้งหมดใน
SampleScene

- เพิ่มออบเจ็กต์ AR Foundation คลิกขวาในแผงลำดับชั้น ใช้เมนูนี้เพื่อเพิ่มรายการต่อไปนี้
- XR > เซสชัน AR: ออบเจ็กต์นี้ควบคุมวงจรของประสบการณ์ AR
- XR > ต้นทางของเซสชัน AR: ออบเจ็กต์นี้จะแปลงพิกัด AR เป็นพิกัดโลกของ Unity
- แสง > แสงแบบกำหนดทิศทาง: แหล่งกำเนิดแสงนี้จะส่องสว่างวัตถุในเกม
ลำดับชั้นควรมีลักษณะดังนี้

- ขยาย AR Session Origin ที่คุณสร้างในลำดับชั้น แล้วเลือกออบเจ็กต์ AR Camera ในเครื่องมือตรวจสอบ ให้เปลี่ยนแท็กเป็น MainCamera

ตั้งค่าการแสดงผล
Universal Render Pipeline ของ Unity ต้องมีการเปลี่ยนแปลง 1 อย่างเพื่อให้เข้ากันได้กับ AR Foundation
- ในแผงโปรเจ็กต์ ให้ไปที่เนื้อหา > การตั้งค่าเพื่อค้นหาชิ้นงาน ForwardRenderer

- เลือก ForwardRenderer
- ในแผงเครื่องมือตรวจสอบ ให้ใช้เพิ่มฟีเจอร์ตัวแสดงผลเพื่อเพิ่มฟีเจอร์ตัวแสดงผลพื้นหลัง AR คอมโพเนนต์นี้จะแสดงฟีดกล้องในฉาก

ยืนยันการตั้งค่า
- ตรวจสอบว่าได้เสียบปลั๊กอุปกรณ์แล้ว และเปิดการแก้ไขข้อบกพร่อง ADB
- คลิก File > Build And Run... การดำเนินการนี้จะอัปโหลดแอปพลิเคชันไปยังอุปกรณ์และเริ่มแอปเมื่อติดตั้งเสร็จแล้ว
- คุณควรเห็นฟีดกล้องบนหน้าจอของอุปกรณ์
ในขั้นตอนถัดไป คุณจะเริ่มเพิ่มฟังก์ชันการทำงานลงในแอป
3. ตรวจจับเครื่องบินในโลกแห่งความเป็นจริง
เมื่อตั้งค่าฉากพื้นฐานแล้ว คุณก็เริ่มพัฒนาเกมได้ ในขั้นตอนนี้ คุณจะตรวจหาเครื่องบินและวาดลงในฉาก
เพิ่มคอมโพเนนต์ ARPlaneManager
ARPlaneManager จะตรวจหา ARPlane และสร้าง อัปเดต และนำออบเจ็กต์เกมออกเมื่อความเข้าใจของอุปกรณ์เกี่ยวกับสภาพแวดล้อมเปลี่ยนแปลงไป
- สร้าง
GameObjectที่ว่างเปล่าโดยใช้แผงลำดับชั้น - เปลี่ยนชื่อเป็น
Driving Surface Managerคอมโพเนนต์นี้จะแสดงเครื่องบินจนกว่าผู้เล่นจะเลือกเครื่องบิน - เลือกออบเจ็กต์เกมใหม่ ในแผง Inspector ให้คลิก Add Component เพื่อเพิ่ม AR Plane Manager

- กำหนดค่า
ARPlaneManagerโดยตั้งค่าฟิลด์Plane Prefabดังนี้- คลิกปุ่มข้าง
Noneเพื่อเปิดหน้าต่างเลือก GameObject - เลือกแท็บเนื้อหา แล้วค้นหา Driving Surface Plane
- คลิกปุ่มข้าง

พรีแฟบจากแพ็กเกจเริ่มต้นนี้มีพื้นผิวที่หยาบกร้านซึ่งจะใช้เป็นของตกแต่งระนาบ
- เปลี่ยน
Detection Modeเป็นHorizontalซึ่งจะกำหนดค่าARPlaneManagerให้แสดงเฉพาะระนาบแนวนอน ซึ่งเหมาะสำหรับการขับขี่
เพิ่มคอมโพเนนต์ ARRaycastManager
ARRaycastManager จะแสดงฟังก์ชันการทำงานของการส่งรังสี ในขั้นตอนถัดไป เราจะใช้ออบเจ็กต์นี้เพื่อมอบการควบคุมให้แก่ผู้ใช้
- ตรวจสอบว่าได้เลือกออบเจ็กต์ที่ชื่อ
Driving Surface Managerในแผง Hierarchy แล้ว - ใน Inspector ให้คลิก Add Component เพื่อเพิ่มคอมโพเนนต์
ARRaycastManagerลงในออบเจ็กต์เกม
ไม่จำเป็นต้องกำหนดค่าเพิ่มเติมสำหรับคอมโพเนนต์นี้
เพิ่มDrivingSurfaceManagerคอมโพเนนต์
DrivingSurfaceManager คือสคริปต์ตัวช่วยจากแพ็กเกจเริ่มต้นที่ช่วยให้เลือก ARPlane ได้ เมื่อเลือก ARPlane แล้ว ระบบจะซ่อนเครื่องบินอื่นๆ ทั้งหมดและปิดใช้เครื่องบินใหม่
- ตรวจสอบว่าได้เลือกออบเจ็กต์ที่ชื่อ
Driving Surface Managerในแผง Hierarchy แล้ว - ใน Inspector ให้คลิก Add Component เพื่อเพิ่มคอมโพเนนต์
DrivingSurfaceManagerลงในออบเจ็กต์เกม
ไม่จำเป็นต้องกำหนดค่าเพิ่มเติมสำหรับคอมโพเนนต์นี้
เรียกใช้แอป
- คลิกไฟล์ > สร้างและเรียกใช้... เพื่อทดสอบการเปลี่ยนแปลง
- เล็งอุปกรณ์ไปที่พื้นผิวแนวนอนในโลกจริง แล้วขยับอุปกรณ์ไปรอบๆ เพื่อให้ ARCore เข้าใจโลกได้ดียิ่งขึ้น

- เมื่อ ARCore ตรวจพบระนาบ คุณจะเห็นพื้นผิวในโลกจริงปกคลุมด้วยพื้นผิวที่เป็นดิน
ARPlaneManagerจะสร้างอินสแตนซ์ของPlane Prefabที่ระบุสำหรับเครื่องบินแต่ละลำที่ตรวจพบDriving Surface Planeพรีแฟบมีคอมโพเนนต์ARPlaneMeshVisualizerซึ่งสร้างตาข่ายสำหรับARPlaneที่กำหนด
ในขั้นตอนถัดไป คุณจะใช้ระนาบที่ตรวจพบเป็นสนามเล่น
4. ทำการทดสอบการตรวจจับเครื่องบิน
ในขั้นตอนก่อนหน้า คุณได้เขียนโปรแกรมแอปพลิเคชันที่ตรวจจับเครื่องบินได้ โดยเครื่องบินเหล่านี้จะแสดงในฉากของเกม ตอนนี้คุณจะเพิ่มการโต้ตอบกับระนาบเหล่านี้ได้โดยการสร้างเล็งเป้าและรถยนต์ที่จะขับบนพื้นผิวของระนาบที่ตรวจพบ
สร้างเล็งเป้า
รูปแบบการควบคุมสำหรับแอปนี้เกี่ยวข้องกับการที่ผู้เล่นชี้โทรศัพท์ไปที่พื้นผิว คุณจะต้องใช้เล็งเป้าเพื่อแสดงความคิดเห็นด้วยภาพที่ชัดเจนสำหรับตำแหน่งที่กำหนด

หากต้องการ "ติด" กากบาทเล็งนี้กับระนาบ AR ให้ใช้การทดสอบการยิง การทดสอบการชนคือเทคนิคที่คำนวณจุดตัดเมื่อแคสต์รังสีในทิศทางที่กำหนด คุณจะใช้การทดสอบ Hit เพื่อตรวจหาจุดตัดในทิศทางของมุมมองกล้อง

เพิ่มกากบาทเล็ง
- ในแผงโปรเจ็กต์บริเวณด้านล่างของหน้าจอ ให้ไปที่ชิ้นงาน > แพ็กเกจเริ่มต้น
- วาง Reticle Prefab ลงในฉากโดยลากไปยังแผงลำดับชั้นของโปรเจ็กต์
- เลือกกากบาทเล็งในลำดับชั้น
- คลิกเพิ่มคอมโพเนนต์ในเครื่องมือตรวจสอบ เพิ่มสคริปต์
ReticleBehaviourจากแพ็กเกจเริ่มต้น สคริปต์นี้มีโค้ดบางส่วนสำหรับการควบคุมเล็ง ReticleBehaviourสคริปต์จะขึ้นอยู่กับDriving Surface Managerที่คุณสร้างไว้ก่อนหน้านี้ ดังนั้นให้เพิ่มการอ้างอิงโดยคลิกตัวเลือกDriving Surface Managerเลือกแท็บฉาก แล้วเลือกDriving Surface Manager

แก้ไข ReticleBehaviour
ReticleBehavior สคริปต์จะวางกากบาทเล็งบนระนาบที่อยู่ตรงกลางวิวพอร์ตของอุปกรณ์
- เปิดสคริปต์
ReticleBehaviour.csโดยดับเบิลคลิกฟิลด์Script - กำหนดกึ่งกลางของหน้าจอโดยใช้
ViewToScreenPointของกล้อง แก้ไขUpdate()เมธอดเพื่อเพิ่มรายการต่อไปนี้
var screenCenter = Camera.main.ViewportToScreenPoint(new Vector3(0.5f, 0.5f));
- ใช้จุดนี้เพื่อทำการ Raycast เพิ่มข้อมูลต่อไปนี้
var hits = new List<ARRaycastHit>();
DrivingSurfaceManager.RaycastManager.Raycast(screenCenter, hits, TrackableType.PlaneWithinBounds);
ตัวแปร hits จะมี ARRaycastHits ซึ่งอธิบายจุดบนรายการที่ติดตามซึ่งตัดกับ ray
- กำหนดจุดตัดที่สนใจโดยการค้นหา
hitsรายการ ให้ความสำคัญกับระนาบที่ล็อกซึ่งอยู่ในDrivingSurfaceManagerและหากไม่มี ให้ใช้ระนาบแรกที่ตรวจพบ เพิ่มรายการต่อไปนี้ที่ส่วนท้ายของUpdate()
CurrentPlane = null;
ARRaycastHit? hit = null;
if (hits.Length > 0)
{
// If you don't have a locked plane already...
var lockedPlane = DrivingSurfaceManager.LockedPlane;
hit = lockedPlane == null
// ... use the first hit in `hits`.
? hits[0]
// Otherwise use the locked plane, if it's there.
: hits.SingleOrDefault(x => x.trackableId == lockedPlane.trackableId);
}
- หาก
hitมีผลลัพธ์ ให้ย้ายการเปลี่ยนรูปของGameObjectนี้ไปยังตำแหน่งการชน
if (hit.HasValue)
{
CurrentPlane = DrivingSurfaceManager.PlaneManager.GetPlane(hit.Value.trackableId);
// Move this reticle to the location of the hit.
transform.position = hit.Value.pose.position;
}
Child.SetActive(CurrentPlane != null);
ทดสอบเส้นเล็ง
- คลิกไฟล์ > สร้างและเรียกใช้... เพื่อทดสอบการเปลี่ยนแปลง
- เมื่อเล็งอุปกรณ์ไปที่เครื่องบิน คุณควรเห็นเส้นเล็งตามการเคลื่อนไหวของกล้อง

สร้างรถ
ผู้เล่นจะควบคุมรถของเล่นที่ขับไปยังตำแหน่งของเส้นเล็ง มีโมเดลและลักษณะการทำงานสำหรับรถยนต์คันนี้ให้ในแพ็กเกจเริ่มต้น
เพิ่ม CarManager ลงในฉาก
- สร้าง
GameObjectว่างใหม่ในลำดับชั้น - เปลี่ยนชื่อเป็น
Car Spawner - เลือกออบเจ็กต์ที่คุณสร้างขึ้น ในแผงลำดับชั้น ให้คลิกเพิ่มคอมโพเนนต์เพื่อเพิ่มคอมโพเนนต์
CarManager - ตั้งค่า
CarManagerการอ้างอิงของโดยคลิกตัวเลือกสำหรับแต่ละช่อง:- Prefab รถยนต์: ในชิ้นงาน ให้เลือก Prefab รถยนต์
- เล็ง: ในฉาก ให้เลือก Reticle Prefab
- Driving Surface Manager: ในฉาก ให้เลือก Driving Surface Manager
ลักษณะการทำงานของ CarManager นี้จะสร้างรถของเล่นบนระนาบที่กากบาทอยู่ หากต้องการ โปรดดูCarBehaviourสคริปต์เพื่อดูวิธีตั้งโปรแกรมรถ
บริการทดลองขับ
- คลิก File > Build And Run เพื่อทดสอบการเปลี่ยนแปลง
- เมื่อแตะเครื่องบิน คุณควรเห็นรถยนต์ขนาดเล็กปรากฏขึ้นในตำแหน่งนั้น รถจะเคลื่อนที่ตามกากบาท
เพิ่มองค์ประกอบเกม
ตอนนี้ผู้เล่นควบคุมเอนทิตีในฉากได้แล้ว ให้ผู้เล่นมีจุดหมายปลายทางที่จะขับรถไป
- สร้าง
GameObjectใหม่ที่ว่างเปล่าใน Hierarchy - เปลี่ยนชื่อเป็น
Package Spawner - เลือกออบเจ็กต์ที่คุณสร้างขึ้น ในแผงลำดับชั้น ให้คลิกเพิ่มคอมโพเนนต์เพื่อเพิ่มคอมโพเนนต์
PackageSpawnerลงในแผง - ตั้งค่า
PackageSpawnerการอ้างอิงของโดยคลิกตัวเลือกสำหรับแต่ละช่อง:- Package Prefab: ใน Assets ให้เลือก Package Prefab
- Driving Surface Manager ในฉาก ให้เลือก Driving Surface Manager
PackageSpawnerลักษณะการทำงานนี้จะสร้างแพ็กเกจใหม่ในตำแหน่งแบบสุ่มบน ARPlane ที่ล็อกไว้หากยังไม่มีแพ็กเกจ
ทดสอบเกม
- คลิก File > Build And Run เพื่อทดสอบการเปลี่ยนแปลง 2. หลังจากสร้างรถแล้ว แพ็กเกจควรจะปรากฏขึ้น
- ขับรถไปรับพัสดุ
- และจะปรากฏใหม่ในตำแหน่งแบบสุ่ม

5. ตั้งค่าการประมาณแสง
ตอนนี้เกมพื้นฐานเสร็จสมบูรณ์แล้ว ให้เพิ่มความสมจริงลงในฉาก AR ในขั้นตอนนี้ คุณจะใช้ Lighting Estimation API ของ ARCore เพื่อตรวจจับแสงที่มีอยู่ในโลกจริงตามเฟรมกล้องที่เข้ามา ระบบจะใช้ข้อมูลนี้เพื่อปรับแสงของฉากให้ตรงกับแสงในโลกจริง
เปิดใช้การประมาณแสง
- ในลำดับชั้น ให้ขยายต้นทางของเซสชัน AR แล้วเลือกออบเจ็กต์กล้อง AR
- ใน Inspector ให้ขยายสคริปต์ AR Camera Manager
- เปลี่ยนฟิลด์การประมาณแสงเป็นทุกอย่าง

แก้ไขแสงส่อง
- ในลำดับชั้น ให้เลือกออบเจ็กต์ Directional Light
- เพิ่มคอมโพเนนต์
LightEstimationลงในคอมโพเนนต์ คอมโพเนนต์นี้จากแพ็กเกจเริ่มต้นมีโค้ดสำเร็จรูปสำหรับการติดตามการเปลี่ยนแปลงของแสง - ในฟังก์ชัน
FrameReceived()ให้เพิ่มข้อมูลต่อไปนี้
ARLightEstimationData lightEstimation = args.lightEstimation;
if (lightEstimation.averageBrightness.HasValue)
Light.intensity = lightEstimation.averageBrightness.Value;
if (lightEstimation.averageColorTemperature.HasValue)
Light.colorTemperature = lightEstimation.averageColorTemperature.Value;
if (lightEstimation.colorCorrection.HasValue)
Light.color = lightEstimation.colorCorrection.Value;
if (lightEstimation.mainLightDirection.HasValue)
Light.transform.rotation = Quaternion.LookRotation(lightEstimation.mainLightDirection.Value);
if (lightEstimation.mainLightColor.HasValue)
Light.color = lightEstimation.mainLightColor.Value;
if (lightEstimation.mainLightIntensityLumens.HasValue)
Light.intensity = lightEstimation.averageMainLightBrightness.Value;
if (lightEstimation.ambientSphericalHarmonics.HasValue)
{
RenderSettings.ambientMode = AmbientMode.Skybox;
RenderSettings.ambientProbe = lightEstimation.ambientSphericalHarmonics.Value;
}
ทดสอบการเปลี่ยนแปลง
- คลิก File > Build And Run เพื่อทดสอบการเปลี่ยนแปลง
- เมื่อดูออบเจ็กต์ในฉาก คุณอาจสังเกตเห็นว่าออบเจ็กต์มีสีแตกต่างกันไปตามแสงสว่างของสภาพแวดล้อม
- หากเป็นไปได้ ให้ลองปรับเปลี่ยนแสง เช่น ลองปิดไฟในห้องที่คุณอยู่ คุณควรเห็นว่าแสงบนวัตถุจะปรับตามการเปลี่ยนแปลงของแสงในโลกจริง

6. สรุป
ยินดีด้วย คุณมาถึงตอนจบของ Codelab นี้เกี่ยวกับ AR Foundation ของ Unity แล้ว
สิ่งที่คุณได้พูดถึงไปแล้ว
- วิธีตั้งค่าโปรเจ็กต์พื้นฐานโดยใช้ AR Foundation และ Universal Rendering Pipeline ของ Unity
- วิธีใช้
ARPlaneManagerเพื่อสมัครใช้บริการแพ็กเกจใหม่ - วิธีใช้
Raycastเพื่อค้นหาจุดตัดที่มีรูปทรงเรขาคณิตเสมือน - วิธีใช้
ARLightEstimationDataเพื่อให้แสงสว่างในฉาก
ขั้นตอนถัดไป
- ดูตัวอย่าง AR Foundation ของ Unity
- เรียกดูเอกสารประกอบของ AR Foundation
- ดูเอกสารประกอบของ Google เกี่ยวกับส่วนขยาย ARCore สำหรับ AR Foundation ของ Unity
งานโบนัส
หากต้องการขยายเกมที่คุณสร้างไว้ที่นี่ ลองดูไอเดียต่อไปนี้
- เพิ่มตัวนับคะแนนลงในเกมโดยแก้ไข
TextMeshProเมื่อPackageManagerสร้างแพ็กเกจใหม่ - ดูข้อมูลประสิทธิภาพขณะที่เกมทำงานโดยเปิดใช้การซ้อนทับประสิทธิภาพ
- ใช้ Raycast แบบต่อเนื่องเพื่อวางออบเจ็กต์ใหม่ในฉากก่อน เมื่อตรวจพบระนาบในพื้นที่ดังกล่าว ออบเจ็กต์จะอัปเดตให้สแนปกับระนาบนั้น