feathure-change-material-project

โปรเจกต์นี้เหมาะสำหรับผู้เริ่มต้นใช้งาน Unreal Engine ผู้อ่านจะได้เรียนรู้ถึงการสร้าง Material และการสร้าง Blueprint เพื่อควบคุมการเปลี่ยน Material ให้กับวัตถุ เมื่อวัตถุได้รับการประทะ (Hit)


ในวิดีโอนี้จะแสดงขั้นตอนทั้งหมด หากต้องการรายละเอียดมากขึ้นสามารถอ่านเนื้อหาที่ต่อจากวิดีโอนี้


ขั้นเตรียมการ

ในเบื้องต้นให้ทำการสร้าง 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 ทดสอบ

VDO – Run ทดสอบ Project

จะเห็นได้ว่าเมื่อ 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 นั้นเอง

Similar Posts