สำหรับสุดยอดโปรแกรมสร้างเกมอย่าง Unity3D แล้วนั้นมีจุดเด่นมากมายดังที่เคยกล่าวไป ซึ่งข้อหนึ่งนั้นคือการที่โปรแกรมสามารถสร้างเกมได้ในแทบทุกแพลตฟอร์มไม่ว่าจะเป็น คอมพิวเตอร์หรือมือถือ ซึ่งในบทความนี้จะกล่าวถึงการใช้งานบนมือถือ ซึ่งแน่นอนว่าต้องมีอุปกรณ์ที่คอมพิวเตอร์ไม่มีเช่น กล้อง โดยจะกล่าวถึงวิธีการแสกน QR Code เพื่อสั่งงานตามข้อความที่ถอดมาได้ และสั่งให้แสดงเป็นวัตถุ 3 มิติ
QR Code
เกริ่นสักนิดก่อนเพื่อให้ทุกท่านเข้าใจว่า QR Code มีลักษณะคล้ายกับ Barcode คือมีการแปลงข้อความให้อยู่ในรูปแบบที่กำหนด โดยมีลักษณะเป็นสี่เหลี่ยมจตุรัส มีจุดบอกทิศอยู่ 3 มุม เพื่อให้รู้ว่าด้านไหนเป็นด้านบน และใช้โปรแกรมในการแสกนเพื่อถอดข้อความซึ่งเป็นได้ทั้ง ตัวอักษร ตัวเลข อักขระต่างๆ ลิงค์ ฯ
เมื่อต้องการถอดรหัส QR code เป็นข้อความสามารถทำได้ทั้งการใช้กล้องแสกน หรือ บันทึกรูปภาพและใช้โปรแกรมถอดรหัส
การอ่าน QR code ใน Unity3d
ในการอ่าน QR code ใน Unity3d มี library ให้ใช้งานเรียบร้อยแล้วคือ IBarcodeReader ซึ่งมีโค๊ดตัวอย่างดังนี้
IBarcodeReader barcodeReader = new BarcodeReader();
IBarcodeReader barcodeReader = new BarcodeReader();
var result = barcodeReader.Decode(camTexture.GetPixels32(), camTexture.width, camTexture.height);
if( result.Text == "Jarutex" ){
//Do something
}
การสร้างวัตถุ 3 มิติ แสดงบนหน้าจอ
การสร้างวัตถุ 3 มิติใน Unity3d นั้นทำได้ง่ายมากโดยมีขั้นตอนดังนี้
- ทำการนำเข้าวัตถุ 3 มิติ ใน Assets และตั้งชื่อตามที่ต้องการ ดังภาพที่ 2
- ทำการสร้าง prefabs ด้วยวัตถุที่นำเข้ามา
- ประกาศตัวแปรเพื่อเก็บวัตถุเป็น GameObject
- ใช้คำสั่ง Instantiate(วัตถุ, ตำแหน่ง, การหมุน) เพื่อสร้างวัตถุที่ต้องการ
ตัวอย่างคำสั่ง
public GameObject crab, crab1
crab1 = Instantiate(crab, new Vector3(0f, 0f, 0f), Quaternion.Euler(70, 0, 0));
จากคำสั่งข้างต้น ตัวแปร crab นั้นเป็นตัวแปรที่ใช้เป็นวัตถุ 3 มิติ ซึ่งเป็นเพียงการเก็บไว้ในโปรแกรมแต่ยังไม่ได้ถูกสร้าง จากนั้นจึงสั่งสร้างวัตถุโดยอ้างอิงวัตถุจาก crab ไปเก็บไว้ใน crab1 เพื่อใช้งานต่อไป
เมื่อรวมโค๊ดทั้งสองเข้าด้วยกันทำให้สามารถสั่งแสดงวัตถุ 3 มิติได้อย่างง่ายดาย
IBarcodeReader barcodeReader = new BarcodeReader();
var result = barcodeReader.Decode(camTexture.GetPixels32(), camTexture.width, camTexture.height);
if( result.Text == "Jarutex" ){
public GameObject fish, fish1
fish1 = Instantiate(fish, new Vector3(0f, 0f, 0f), Quaternion.Euler(70, 0, 0));
}
สรุป
การนำอ่าน QR code ใน Unity3d สามารถทำได้อย่างง่ายดายโดยมี library ที่ใช้งานง่ายให้ใช้ คือ IBarcodeReader ซึ่งทำได้โดย
- สร้างตัวแปรอ้างอิงคลาส IBarcodeReader
- ใช้ตัวแปรทำการอ่าน QR code ผ่านกล้องและเก็บไว้ให้ตัวแปรผลลัพธ์
- อ่านผลลัพธ์ได้ด้วย Attribute ที่ชื่อว่า Text (result.Text)
ส่วนการแสดงวัตถุ 3 มิติก็สามารถทำได้ง่ายเช่นกันโดยการนำเข้าวัตถุเตรียมไว้ และสั่งสร้างวัตถุนั้นบนหน้าจอด้วยคำสั่ง Instantiate ในตำแหน่งและการหมุนที่กำหนด
สุดท้ายนี้ขอให้ทุกท่านสนุกกับการเขียนโปรแกรมครับ
(C) 2022, โดย อ.จารุต บุศราทิจ/อ.ดนัย เจษฎาฐิติกุล
ปรับปรุงเมื่อ 2022-01-15, 2022-02-24