โปรเจกต์นี้เหมาะสำหรับผู้เริ่มต้นใช้งาน Unreal Engine ผู้อ่านจะได้เรียนรู้ถึงการสร้าง Material และการสร้าง Blueprint เพื่อควบคุมการเปลี่ยน Material ให้กับวัตถุ เมื่อวัตถุได้รับการประทะ (Hit)
ในวิดีโอนี้จะแสดงขั้นตอนทั้งหมด หากต้องการรายละเอียดมากขึ้นสามารถอ่านเนื้อหาที่ต่อจากวิดีโอนี้
โพสต์นี้ยาว มีหัวข้ออะไรบ้าง
สร้าง Project
ในเบื้องต้นให้ทำการสร้าง project โดยเลือก Template เป็น ชนิด First Person และตั้งค่าให้เป็น Blueprint
สร้าง Object ทดสอบ
ในหน้าต่างโปรแกรมให้ไปที่แท็บ Place Actor แล้วเลือก Basic จากนั้นคลิกเลือก Cylinder แล้วลากไปวางใน Viewport
สร้าง Material
ไปที่แท็บ Content Browser คลิกที่ปุ่ม Add/Import แล้วเลือก Material
จากนั้นทำการตั้งชื่อให้ กับ Material ของเราโดยใช้ชื่อ YellowMat แล้วดับเบิ้ลคลิกเพื่อเปิดหน้าต่าง Material Editor ขึ้นมา
พื้นที่ตรงกลางของ Material Editor ซึ่งเรียกว่า graph จะปรากฏโหนดที่มีชื่อว่า YellowMat ซึ่งเป็นชื่อเดียวกับชื่อของ Material ที่เราได้ตั้งไว้ก่อนหน้า ในโหนดนี้จะประกอบไปด้วย Input pin สำหรับกำหนดคุณสมบัติต่างๆ ให้กับ Material
เพิ่ม Node ที่ชื่อว่า VectorParameter โดยค้นหาผ่านทางช่อง Search ที่อยู่ทางด้านบนของแท็บ Palate เมื่อเจอแล้วให้คลิกลากมาวางใน graph แล้วตั้งชื่อเป็น Color
ทำการกำหนดสี โดยดับเบิ้ลคลิกที่โหนด Color จะปรากฎ Color Picker ขึ้นมา แล้วเลือกสีเหลือง
จากนั้นเชื่อม Output pin ของโหนด Color เข้ากับ Input Pin ที่ชื่อว่า Base Color ของโหนด YellowMat
เพิ่มโหนดที่ชื่อว่า ScalarParameter จำนวน 2 โหนด ตั้งชื่อเป็น Metallic และ Roughness แล้วเชื่อมเข้ากับ Input Pin ที่ชื่อว่า Metallic และ Roughness ของโหนด YellowMat ตามลำดับ
จากนั้นกำหนดค่าให้โหนด Roughness เป็น 0.1 ซึ่งโหนด Metallic ที่เราเพิ่มเข้าไป ก็จะไปสร้างความวาวให้กับผิววัตถุ ส่วนโหนด Roughness ก็จะไปสร้างความขรุขระ
ในตอนนี้เราก็มีวัตถุ Cylinder สร้างไว้ใน Viewport และ Material ที่ชื่อว่า YellowMat แล้ว
สร้าง Blueprint Script
ขั้นตอนต่อไปเราจะทำการสร้าง Blueprint เพื่อเปลี่ยน Material ของ Cylinder จากที่เดิมที่เป็นสีขาวให้กลายเป็นสีเหลือง โดยกระบวนการดังกล่าวจะเกิดขึ้นเมื่อ Cylinder ได้รับการประทะ (Hit)
เริ่มจากการคลิกเลือก Cylinder ใน Viewport แล้วไปที่แท็บ Details จากนั้นคลิกที่ปุ่ม Blueprint/Add Script
เมื่อหน้าต่างปรากฏขึ้นมา ให้ไปที่แท็บ Event Graph เราจะพบกับ Event Node จำนวน 3 โหนด ซึ่งเป็น Default Node ที่ระบบสร้างไว้ให้ ได้แก่
Event Begin Play เป็นโหนดที่จะให้มีการทำงานเกิดขึ้นเมื่อมีการเริ่มเกม
Event Actor Begin Overlap เป็นโหนดที่จะให้มีการทำงานเกิดขึ้นเมื่อได้การชนจากวัตถุอื่น
Event Tick เป็นโหนดที่จะให้มีการทำงานเกิดขึ้นในทุกครั้งเมื่อมีการแสดง frame ใหม่ของหน้าจอ
สำหรับโปรเจกต์นี้เราจะไม่ใช้งาน Default Node ที่โปรแกรมเตรียมไว้ให้ แต่เราจะเพิ่มโหนดที่ชื่อว่า Event Hit ซึ่งเป็นโหนดที่จะให้มีการทำงานเมื่อมีเหตุการณ์การประทะ (Hit) เกิดขึ้น
ในการเพิ่มโหนด Event Hit ทำได้โดยการคลิกขวาบริเวณพื้นที่ graph จะปรากฏหน้าต่างสำหรับค้นหาขึ้นมา ให้พิมพ์คำว่า Event Hit ในช่องค้นหา จากนั้นคลิกเลือกจากรายการ เราก็จะได้โหนด Event Hit ใน graph
ต่อไปเราจะทำการเพิ่มโหนดที่ชื่อว่า Set Material ซึ่งโหนดนี้จะทำหน้าที่เปลี่ยน Material ให้กับวัตถุตามชนิดของ Material ที่เรากำหนด
ให้ไปที่โหนด Event Hit ใน graph แล้วคลิกไอคอนรูปสามเหลี่ยม ซึ่งไอคอนนี้เราจะเรียกว่า Execution Pin แล้วลากไปวางบนพื้นที่ graph จะปรากฏหน้าต่างค้นหาขึ้นมา ให้ทำเครื่องหมาย check ในช่อง Context Sensitive จากนั้นค้นหาด้วยคำว่า set material แล้วคลิกเลือก Set Material (StaticMeshComponent) จากรายการที่แสดง
เราก็จะได้โหนด Set Material ที่เชื่อมต่อกับโหนด Event Hit อยู่ใน graph จากนั้นทำการกำหนดค่า ให้กับ Material Pin ของโหนด Set Material เป็น YallowMat แล้วทำการ Complie และ Save
ทดสอบ Project
ในตอนนี้ Blueprint สำหรับการเปลี่ยน Material ให้กับวัตถุก็เป็นอันเสร็จเรียบร้อย ให้เราและปิดหน้าต่าง Event Graph Panel จากนั้นทำการ Run ทดสอบ
จะเห็นได้ว่าเมื่อ Object ทดสอบถูกประทะด้วยกระสุนปืน สีก็จะเปลี่ยนไป เป็นเพราะ Blueprint ของ Object ทดสอบจะทำการตรวจสอบเหตุการณ์การประทะ (โหนด Event Hit) หากวัตถุได้รับการประทะก็จะให้มีการทำงานเกิดขึ้น โดยจะสั่งให้มีการเปลี่ยน Material (โหนด Set Material) เกิดขึ้น
ปรับปรุง Script
นอกจากนี้หากผู้อ่านทดลองเคลื่อน Player Character โดนใช้ปุ่ม W-S-A-D ให้ไปประทะกับ Object ทดสอบ ก็จะทำให้ Object ทดสอบมีการเปลี่ยนสีด้วยเช่นกัน เนื่องจากเรายังไม่ได้ระบุวัตถุที่จะเข้ามาประทะนั้นว่าให้เป็นอันไหนถึงจะให้ Object ทดสอบเกิดการเปลี่ยนสี
ในการปรับปรุง Blueprint เพื่อให้ Object ทดสอบเปลี่ยนสีเฉพาะเมื่อถูกประทะด้วยกระสุนปืน เริ่มจากทำการเปิด Blueprint ของวัตถุทดสอบขึ้นมา โดยดับเบิลที่ Cylinder_blueprint ใน Content Browser
ในแท็บ Event Graph ไปที่โหนด Event Hit จากนั้นคลิกที่ Output Pin ที่ชื่อว่า Other ลากไปวางในพื้นที่ว่างของ graph แล้วค้นหาโหนดที่ชื่อว่า Cast to FirstPersonProjectile แล้วคลิกเลือกจากรายการที่แสดงเพื่อเพิ่มโหนดลงบน graph
จะเห็นได้ว่า pin ที่ชื่อว่า Other ของโหนด Event Hit นั้นจะเชื่อมต่อเข้ากับ pin ที่ชื่อว่า Object ของโหนด Cast to FirstPersonProjectile โดยอัตโนมัติ
จากนั้นเชื่อมโหนด Event Hit และโหนด Set Material เข้ากับโหนด Cast to FirstPersonProjectile ดังแสดงในรูป
แล้วทำการ Complie แล้ว Save จากนั้นทำการ Run ทดสอบ จะเห็นได้ว่า Object ทดสอบจะเปลี่ยนสีเมื่อประทะกับกระสุนปืนเท่านั้น แต่จะไม่เปลี่ยนสีเมื่อประทะกับวัตถุอื่น เป็นผลอันเนื่องมาจากเราได้ทำการระบุ object ให้กับโหนด Event Hit โดยอ้างอิงไปยัง object ที่เป็นกระสุนปืนโดยใช้โหนด Cast to FirstPersonProjectile นั้นเอง