ใช้งานพารามิเตอร์ Cursor.lockState กันดีกว่า

2000px-lock_font_awesome-svg

สวัสดีครับ กลับมาพบกับเทคนิคการเขียนเกมด้วย Unity กันอีกเช่นเคย วันนี้ก็เป็นคิวของฟังชั่นก์และพารามิเตอร์ที่น่าสนใจอีกครั้งนะครับ  วันนี้ผมจะเอาพารามิเตอร์ Cursor.lockState มาฝากเพื่อนๆครับ

Cursor.lockState เป็นพารามิเตอร์ที่ใช้ควบคุมการล็อคเม้าส์เคอเซ่อของเกมเราครับ โดยค่าที่เราจะเซตเข้าไป จะเป็นค่าของ CursorLockMode ครับ ซึ่งในคลาส CursorLockMode เนี่ย ก็จะมีด้วยกันทั้งหมด 3 แบบดังนี้ครับ

None ปลดล็อค Cursor

Locked  ล็อค Cursor และทำให้ Cursor มาอยู่ที่กลางจอ และจะซ่อน Cursor โดยอัตโนมัติ

Confined  ล็อคให้ Cursor ไม่หลุดออกนอกหน้าต่างเกม

มาดูตัวอย่างกันครับ

01

จากภาพผมมีสคริปชื่อว่า LockScript ใส่ไว้ใน MainCamera เพื่อความง่ายนะครับ เราจะใส่สคริปดังนี้ครับ

02

ในฟังชั่นก์ Start ผมเริ่มด้วย

Cursor.lockState = CursorLockMode.Confined;

ซึ่งคำสั่งนี้ทำให้เกมเมื่อเริ่มมา Cursor ของเราจะไม่สามารถหลุดจากหน้าจอเกมได้ครับ ( มีผลเฉพาะการรันเกมแบบ Window mode และต้องเป็นการสร้าง Exe แล้วเท่านั้นครับ ใน Editor ไม่เห็นผล )

ส่วนใน Update

if (Input.GetMouseButtonDown(1))

{

Cursor.lockState = CursorLockMode.Locked;

}

 

if (Input.GetMouseButtonUp(1))

{

Cursor.lockState = CursorLockMode.None;

Cursor.visible = true;

Cursor.lockState = CursorLockMode.Confined;

}

 

คำสั่งมีสองส่วนคือ เมื่อคลิกเม้าส์ขวา เกมของเราจะล็อค Cursor และเมื่อปล่อยเม้าส์ ก็จะเลิกล็อคและให้ Cursor ยังคงอยู่ในหน้าต่างเกมเช่นเดิมครับ

ซึ่งการใช้     Cursor.lockState เนี่ย เราสามารถนำไปประยุกต์ใช้ได้หลายอย่างนะครับ เช่นการซูมของเกมแนว FPS เป็นต้น หรือเกมที่เราไม่ต้องการให้เคอเซ๋อย้ายออกจากกึ่งกลางหน้าจอก็สามารถใช้เทคนิคนี้ได้ครับ

เป็นไงบ้างครับกับพารามิเตอร์ที่เอามาฝากกันวันนี้ หวังว่าเพื่อนๆจะได้นำไปประยุกต์ใช้กับเกมของเพื่อนๆได้นะครับ แล้วพบกันใหม่โอกาสหน้าครับ