สวัสดีครับ กลับมาพบกับเทคนิคดีๆในการเขียนเกมด้วย Unity กันอีกเช่นเคย โดยในวันนี้ผมก็มี Asset ง่ายๆมาฝากเพื่อนๆกัน สำหรับเพื่อนๆสายโปรแกรมเมอร์ที่ชำนาญในการเขียนสคริปแล้วอาจจะรู้สึกว่า Asset ที่นำมาฝากในวันนี้อาจจะดูง่ายไป แต่สำหรับเพื่อนๆสายกราฟฟิคหรือเพื่อนๆโปรแกรมเมอร์ที่กำลังฝึกหัดน่าจะได้ใช้ประโยชน์และศึกษาวิธีการเขียนจาก Asset ตัวนี้ได้ครับ โดย Asset ในวันนี้ที่นำฝากกันคือ Asset Doors หรือประตูนั่นเองครับ
Asset ตัวนี้เป็นการทำประตูที่สามารถกดปุ่ม E เพื่อเปิดได้ครับ แต่ว่าตัวล่าสุดที่ผมดาวโหลดมาจะต้องมีการแก้ไขนิดหน่อย ในอนาคตผู้พัฒนาอาจจะแก้ไขบั๊กนี้แต่ถ้ายังไม่แก้มีวิธีแก้ไขดังนี้ครับ
เมื่อเรากด Play จะเกิด Error ฟ้องว่า Tag: D is not defined. ซึ่งวิธีแก้ไขก็ง่ายๆครับ เพียงแค่เราเพิ่ม Tag ใหม่ที่ชื่อว่า Door แล้วเปลี่ยน Object Door ให้ใช้แท็กนี้ เท่านี้ก็สามารถใช้งาน Asset ตัวนี้ได้แล้วครับ
มาดูตัวอย่าง Scene ที่สมบูรณ์กันครับ เราสามารถควบคุมตัวละครโดยปุ่ม wasd และเปิดประตูโดยใช้ปุ่ม E ครับ
ส่วนสำคัญของ Asset ตัวนี้มี 2 ส่วนด้วยกันนะครับ ส่วนแรกคือตัว Player ที่เราควบคุมเพื่อที่จะสั่งให้เปิดประตู มี Component ที่น่าสนใจคือ Detection มีพารามิเตอร์ดังนี้ครับ
Reach – ระยะห่างที่ตัวละครเราสามารถเปิดประตูได้ ยิ่งน้อยตัวเรายิ่งต้องเข้าไปใกล้เพื่อที่จะสามารถกดตัว E ได้ครับ
Debug Setting – ใช้กำหนดสีเส้น Debug ที่ตัวผู้เล่นจะยิงออกไปครับ
อีกส่วนก็คือตัวประตูครับ มาดูพารามิเตอร์ที่น่าสนใจกัน
Initial Angle – ค่าเริ่มต้นมุมการหมุนของประตู
Rotation Angle – เมื่อเปิดแล้วประตูจะหมุนกี่องศา
Hinge Side – เปิดเปิดประตู จะหมุนไปทิศทางไหน
Speed Rotating – ความเร็วการหมุนของประตู
Times Moveable – จำนวนครั้งที่เปิดประตูได้ ถ้าเป็น 0 จะเปิดกี่ครั้งก็ได้
เป็นยังไงบ้างครับสำหรับ Asset ที่นำมาฝากกันในวันนี้ เพื่อนๆที่ชำนาญแล้วอาจจะมองว่าสามารถทำวิธีอื่นที่ง่ายกว่านี้ได้เช่นการสร้างอนิเมชั่นประตูหมุนมาเลย แต่ผมคิดว่า Asset ตัวนี้เหมาะกับเพื่อนๆที่เพิ่งเริ่มหัดเขียนโปรแกรมด้วย Unity มากๆเลยล่ะครับ เพราะนอกจากจะได้สคริปเบื้องต้นในการทำประตูแล้ว ยังได้แนวคิดและวิธีการเขียนสคริปการเช็คชนด้วยเส้น รวมไปถึงการ Debug ค่าเส้นออกมาให้เห็นอีกด้วย นับเป็นการเขียนที่น่าสนใจเลยทีเดียวนะครับ
ถ้าเพื่อนๆคนไหนสนใจ สามารถดาวโหลดได้ ที่นี่ ครับ แล้วพบกันใหม่โอกาสหน้าครับ