ใช้งาน Lerp เบื้องต้น

cooltext193678056156432

สวัสดีครับ กลับมาพบก็ Tip การเขียนเกมด้วย Unity  กันอีกเช่นเคย จากที่เคยติดค้างกันไว้ว่าจะพูดถึงฟังชั่นก์ Lerp วันนี้เป็นโอกาสดีเลยได้จับเอาฟังชั่นก์นี้มาพูดถึงซักทีครับ

จริงๆแล้วฟังชั่นก์ Lerp ใน Unity มีประยุกต์ไปหลายรูปแบบมากครับ ไม่ว่าจะเป็น Vector3.Lerp หรือ LerpAngle แต่วันนี้เราจะมาดูตัวที่เป็นรากฐานของฟังชั่นก์นี้กันก่อนเพื่อนให้เข้าใจได้ง่าย นั่นก็คือ Mathf.Lerp ครับ

Mathf.Lerp  มีโครงสร้างของฟังชั่นก์แบบนี้ครับ

Lerp(float a, float b, float t);

โดยที่

a = ค่าเริ่มต้น

b = ค่าสิ้นสุด

t = เปอเซนต์ของเวลา ค่านี้เราจะต้องเปลี่ยนตลอดเวลาเพื่อให้ a เคลื่อนที่ไปหา b ถ้ายังงงๆก็คือ ถ้า t = 0 จะได้ค่า a และถ้า t = 1 ก็จะได้ค่า b ในขณะที่ถ้า t = 0.5 ก็จะได้ค่าตรงกลางระหว่าง a และ b ครับ มาลองดูตัวอย่างการใช้งานกันครับ

01

จากภาพผมมีกล่อง Cube อยู่ โดยที่ผมสร้าง Material มา 1 ตัว และให้มันเป็นสีขาว รวมถึงสร้างสคริปชื่อ LerpScript ใส่ไว้ที่ Cube นี้ มาดูสคริปภายในกันครับ

02

จะเห็นว่าผมสร้างตัวแปรแบบ Public เอาไว้ เพื่อที่จะลากเอา Mesh renderer มาใส่ เพื่อที่เราจะได้ไม่ต้องใช้ Getcomponent ให้ยุ่งยากครับ ส่วนสำคัญก็คือ

mat.material.color = new Color(Mathf.Lerp(0,1,Time.time),0,0);

หมายความว่าผมจะเปลีย่นค่าสีแดงของ Cube ก้อนนี้ โดยเริ่มจากค่าสีแดงเป็น  0 และเพิ่มไปเรื่อยๆจนถึง 1 โดยใช้ค่าตัวแปร Time.time ซึ่งเป็นค่าที่บอกว่าเริ่มเกมมานานเท่าไหร่แล้วครับ เมื่อลองกด Play ก็จะเห็นว่า Cube ของเราค่อยๆเปลี่ยนสีแล้วครับ

03

 

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