run-test-sprint-project

เนื่องจาก Player Character ที่ระบบสร้างมาให้นั่น ความเร็วในการเคลื่อนที่จะถูกกำหนดไว้ในคุณสมบัติ Character Movement : Walking ในส่วนของ Max Walk Speed ซึ่งมีค่า default เป็น 600 ซึ่งเทียบเท่ากับความเร็วของการเดิน ดังนั้นโปรเจกต์นี้ก็จะเป็นการปรับปรุงระบบการเคลื่อนที่ของ Player Character ให้สามารถวิ่งได้ (Sprint) แนวคิดในการสร้างคำสั่งก็คือ เราจะกำหนดปุ่มเพื่อรับ Input เมื่อผู้เล่นกดปุ่มนี้ระหว่าง Player Character กำลังเคลื่อนที่ ค่าของตัวแปร Max Walk Speed จะถูกปรับเป็น 2200  และเมื่อไรที่ผู้เล่นเลิกกดปุ่มความเร็วก็จะกลับมาเป็นค่า Default ตามเดิม



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

ในเบื้องต้นให้ทำการสร้าง project โดยเลือก Template เป็น ชนิด First Person และตั้งค่าให้เป็น Blueprint


กำหนด Input ปุ่มกดเพิ่มความเร็ว

เปิดเมนู Edit จากเมนูด้านบนสุดของหน้าต่างโปรแกรม แล้วเลือก Project Setting จะปรากฏหน้าต่างขึ้นมา

menu-project-setting

ทางด้านซ้ายมือของหน้าต่างจะมีรายการตั้งค่าต่างๆ ให้ไปที่หมวดหมู่ Engine แล้วเลือก Input จะปรากฏรายละเอียดขึ้นทางด้านขวามือ

input-details

ในหมวดหมู่ Blinding ให้คลิกเครื่องหมาย ( + ) หลัง Action Mapping เพื่อสร้าง Action Mapping ใหม่ขึ้นมา

input-binding

ให้กำหนดชื่อเป็น Sprint จากนั้นกำหนดปุ่มสำหรับเรียกใช้งาน Action นี้เป็น Left Shift

action-mapping

สำรวจ Script ควบคุม Player Character

ในหน้าต่างหลักของโปรแกรม ให้ไปที่แท็บ Content Browser แล้วเข้าไปในโฟล์เดอร์ Content > FirstPersonBP > Blueprints จากนั้นเปิด Blueprint ที่ชื่อว่า FirstPersonCharacter ขึ้นมา

open-first-person-character

คลิกเลือกแท็บ Event Graph ก็จะพบกับ Script คำสั่งซึ่งเป็น Default ของโปรแกรมถูกจัดเป็นกลุ่มๆ

first-person-event-graph

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 ตามที่เราต้องการ

character-movement-details

ให้คลิกเลือก CharacterMovement (Inherited) แล้วลากไปวางบนที่ graph จะได้โหนด Character Movement ขึ้นมา โหนดนี้ทำหน้าที่เป็น Target สำหรับการเปลี่ยนแปลงค่า Max Walk Speed ของ Player Character

node-character-movement

เพิ่มโหนด InputAction Sprint โดยคลิกขวาบริเวณที่ว่างแล้วค้นหาจากคำว่า Sprint โหนดนี้ทำหน้าที่รอรับสัญญาณ Input จากการกดปุ่ม Left Shift

add-sprint-node
sprint-node

เพิ่มโหนด Set Max Walk Speed จำนวน 2 โหนด แล้วกำหนดค่าเป็น 2200 และ 600 ตามลำดับ โหนดนี้ทำหน้าที่กำหนดค่าให้ตัวแปร Max Walk Speed

add-set-max-walk-node
show-max-walk-node

จากนั้นเชื่อมโหนดต่างๆ เข้าด้วยกันดังรูป

connect-node-all

การทำงานของชุดคำสั่งนี้เริ่มจากเมื่อผู้เล่นกดปุ่ม 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 โหนด แล้วเชื่อมต่อดังรูป

complete-connect-all-node

รันทดสอบโปรเจกต์

ในขณะที่กดปุ่มให้ Player เคลื่อนที่ แล้วทำการกดปุ่ม Left Shift จะเห็นได้ว่า Player จะเคลื่อนที่เร็วขึ้นและทางด้านมุมบนซ้ายของหน้าจอจะแสดงค่าของ Max Walk Speed เป็น 2200 จากนั้นถ้าทำการปล่อยปุ่มที่กด Player ก็จะเคลื่อนที่ช้าลง ค่าที่แสดงก็จะเปลี่ยนเป็น 600

run-test-project-1
ขณะกดปุ่ม Left Shift
run-test-project-2
ขณะปล่อยปุ่ม Left Shift

Similar Posts