เนื่องจาก Player Character ที่ระบบสร้างมาให้นั่น ความเร็วในการเคลื่อนที่จะถูกกำหนดไว้ในคุณสมบัติ Character Movement : Walking ในส่วนของ Max Walk Speed ซึ่งมีค่า default เป็น 600 ซึ่งเทียบเท่ากับความเร็วของการเดิน ดังนั้นโปรเจกต์นี้ก็จะเป็นการปรับปรุงระบบการเคลื่อนที่ของ Player Character ให้สามารถวิ่งได้ (Sprint) แนวคิดในการสร้างคำสั่งก็คือ เราจะกำหนดปุ่มเพื่อรับ Input เมื่อผู้เล่นกดปุ่มนี้ระหว่าง Player Character กำลังเคลื่อนที่ ค่าของตัวแปร Max Walk Speed จะถูกปรับเป็น 2200 และเมื่อไรที่ผู้เล่นเลิกกดปุ่มความเร็วก็จะกลับมาเป็นค่า Default ตามเดิม
โพสต์นี้ยาว มีหัวข้ออะไรบ้าง
สร้าง Project
ในเบื้องต้นให้ทำการสร้าง project โดยเลือก Template เป็น ชนิด First Person และตั้งค่าให้เป็น Blueprint
กำหนด Input ปุ่มกดเพิ่มความเร็ว
เปิดเมนู Edit จากเมนูด้านบนสุดของหน้าต่างโปรแกรม แล้วเลือก Project Setting จะปรากฏหน้าต่างขึ้นมา
ทางด้านซ้ายมือของหน้าต่างจะมีรายการตั้งค่าต่างๆ ให้ไปที่หมวดหมู่ Engine แล้วเลือก Input จะปรากฏรายละเอียดขึ้นทางด้านขวามือ
ในหมวดหมู่ Blinding ให้คลิกเครื่องหมาย ( + ) หลัง Action Mapping เพื่อสร้าง Action Mapping ใหม่ขึ้นมา
ให้กำหนดชื่อเป็น Sprint จากนั้นกำหนดปุ่มสำหรับเรียกใช้งาน Action นี้เป็น Left Shift
สำรวจ Script ควบคุม Player Character
ในหน้าต่างหลักของโปรแกรม ให้ไปที่แท็บ Content Browser แล้วเข้าไปในโฟล์เดอร์ Content > FirstPersonBP > Blueprints จากนั้นเปิด Blueprint ที่ชื่อว่า FirstPersonCharacter ขึ้นมา
คลิกเลือกแท็บ Event Graph ก็จะพบกับ Script คำสั่งซึ่งเป็น Default ของโปรแกรมถูกจัดเป็นกลุ่มๆ
Trigger Node (โหนดสีแดง) เป็นโหนดที่จะคอยรับสัญญานของ Input ตามที่กำหนดไว้ใน Action Mapping หรือ Axis Mapping
ปรับปรุง Script เพิ่มความสามารถ Sprint ให้ Player Character
ไปที่แท็บ Component คลิกเลือก CharacterMovement (Inherited) ในแท็บ Details ทางด้านขวามือจะแสดงคุณสมบัติต่างๆ ที่เป็น Default ของ Player Character ขึ้นมา ในหมวดหมู่ Character Movement : Walking ค่าของ Max Walk Speed จะถูกกำหนดมาเป็น 600 ในการเพิ่มความเร็วการเคลื่อนที่ให้กับ Player Character เราก็จะสร้างชุดคำสั่งเพื่อเปลี่ยนค่าของ Max Walk Speed ตามที่เราต้องการ
ให้คลิกเลือก CharacterMovement (Inherited) แล้วลากไปวางบนที่ graph จะได้โหนด Character Movement ขึ้นมา โหนดนี้ทำหน้าที่เป็น Target สำหรับการเปลี่ยนแปลงค่า Max Walk Speed ของ Player Character
เพิ่มโหนด InputAction Sprint โดยคลิกขวาบริเวณที่ว่างแล้วค้นหาจากคำว่า Sprint โหนดนี้ทำหน้าที่รอรับสัญญาณ Input จากการกดปุ่ม Left Shift
เพิ่มโหนด Set Max Walk Speed จำนวน 2 โหนด แล้วกำหนดค่าเป็น 2200 และ 600 ตามลำดับ โหนดนี้ทำหน้าที่กำหนดค่าให้ตัวแปร Max Walk Speed
จากนั้นเชื่อมโหนดต่างๆ เข้าด้วยกันดังรูป
การทำงานของชุดคำสั่งนี้เริ่มจากเมื่อผู้เล่นกดปุ่ม Left Shift ซึ่งเป็นปุ่มสำหรับสร้าง Input ที่จะส่งสัญญาณมายังโหนด InputAction Sprint ถ้าสถานะเป็นการกดปุ่ม (Pressed) จะมีการกำหนดค่าให้ตัวแปร Max Walk Speed เป็น 2200 โดยโหนด Set Max Walk Speed แต่ถ้าสถานะเป็นการปล่อยปุ่ม (Released) ค่าตัวแปร Max Walk Speed ก็จะถูกกำหนดเป็น 600
เพิ่มโหนด Print String เพื่อแสดงค่าทางหน้าจอ
ในการรันทดสอบโปรเจกต์ เพื่อให้สามารถสังเกตุเห็นการเปลี่ยนแปลงค่า Max Walk Speed เราจะให้มีการแสดงค่าออกทางหน้าจอตอนที่มีการกดปุ่มหรือปล่อยปุ่ม Left Shift โดยเราเพิ่มโหนด Print String จำนวน 2 โหนด แล้วเชื่อมต่อดังรูป
รันทดสอบโปรเจกต์
ในขณะที่กดปุ่มให้ Player เคลื่อนที่ แล้วทำการกดปุ่ม Left Shift จะเห็นได้ว่า Player จะเคลื่อนที่เร็วขึ้นและทางด้านมุมบนซ้ายของหน้าจอจะแสดงค่าของ Max Walk Speed เป็น 2200 จากนั้นถ้าทำการปล่อยปุ่มที่กด Player ก็จะเคลื่อนที่ช้าลง ค่าที่แสดงก็จะเปลี่ยนเป็น 600