Unity - การเขียนสคริปต์การเคลื่อนไหวพื้นฐาน
ในบทเรียนนี้เราจะเขียนโค้ดที่ทำให้ gameObject เลื่อนขึ้นลงซ้ายและขวาตามข้อมูลที่ผู้ใช้ป้อน สิ่งนี้จะช่วยให้เราเข้าใจขั้นตอนการทำงานของ Unity scripting ได้ง่ายขึ้น
จำไว้ว่า GameObject ทุกตัวมีองค์ประกอบอย่างน้อยหนึ่งอย่าง - Transform. สิ่งที่พิเศษคือ Transform ของ gameObject ยังแสดงเป็นตัวแปรในด้านสคริปต์ของ Unity เพื่อให้เราสามารถแก้ไขได้โดยใช้รหัส สิ่งนี้ไม่ได้ จำกัด เฉพาะการแปลงร่างอย่างใดอย่างหนึ่ง ส่วนประกอบทั้งหมดใน Unity มีคุณสมบัติซึ่งสามารถเข้าถึงได้ผ่านตัวแปรในการเขียนสคริปต์
เริ่มต้นด้วยสคริปต์การเคลื่อนไหวของเรา สร้างสคริปต์ใหม่และตั้งชื่อว่า "การเคลื่อนไหว"
ตอนนี้เปิดสคริปต์และคุณจะเห็นสิ่งเดียวกับที่คุณเห็นในบทเรียนที่แล้ว
ให้เราสร้างตัวแปรลอยสาธารณะชื่อ speed. สร้างตัวแปรpublic ใน Unity มีข้อได้เปรียบอย่างมาก -
ตัวแปรจะแสดงเป็นช่องที่แก้ไขได้ภายในโปรแกรมแก้ไขดังนั้นคุณไม่จำเป็นต้องปรับค่าในโค้ดด้วยตนเอง
public class Movement : MonoBehaviour {
public float speed;
}
หากเราบันทึกสคริปต์นี้โดยไม่ต้องแตะวิธีการอื่นควรรวบรวมใน Unity
(คุณสามารถดูได้ว่ากำลังรวบรวมโดย
ต่อไป, drag and dropสคริปต์จาก Assets ไปยัง GameObject หากคุณทำอย่างถูกต้องนี่คือสิ่งที่คุณควรเห็นในคุณสมบัติของ GameObject -
เนื่องจากค่าความเร็วสามารถปรับได้และไม่จำเป็นต้องเปลี่ยนรหัสตลอดเวลาเราจึงสามารถใช้วิธี update () แทน start () ได้
ตอนนี้ให้เราพิจารณาวัตถุประสงค์ของวิธีการอัปเดต -
ตรวจสอบอินพุตของผู้ใช้
หากมีอินพุตของผู้ใช้โปรดอ่านทิศทางของอินพุต
เปลี่ยนค่าตำแหน่งของการแปลงของวัตถุตามความเร็วและทิศทางของวัตถุ ในการทำเช่นนั้นเราจะเพิ่มรหัสต่อไปนี้ -
void Update() {
float h = Input.GetAxisRaw(“Horizontal”);
float v = Input.GetAxisRaw(“Vertical”);
gameObject.transform.position = new Vector2 (transform.position.x + (h * speed),
transform.position.y + (v * speed));
ตอนนี้ให้เราพูดคุยเกี่ยวกับรหัสใน Breif
ก่อนอื่นเราสร้างตัวแปรทศนิยมชื่อ h (สำหรับแนวนอน) และค่าของมันถูกกำหนดโดย Input.GetAxisRawวิธี. วิธีนี้จะคืนค่า -1, 0 หรือ 1 ขึ้นอยู่กับว่าผู้เล่นกดปุ่มใดบนลูกศรขึ้น / ลง / ซ้าย / ขวา
คลาสอินพุตมีหน้าที่รับอินพุตจากผู้ใช้ในรูปแบบของการกดคีย์อินพุตเมาส์อินพุตคอนโทรลเลอร์และอื่น ๆ เมธอด GetAxisRaw นั้นเข้าใจยากกว่าเล็กน้อยดังนั้นเราจะกลับไปทำในภายหลัง
ต่อไปเราคือ updating ตำแหน่งของ gameObject ของเราไปยังตำแหน่งใหม่ที่กำหนดโดยการสร้างไฟล์ Vector2. Vector2 ใช้พารามิเตอร์ 2 ตัวซึ่งเป็นพารามิเตอร์x and yค่าตามลำดับ สำหรับค่า x เราระบุผลรวมของวัตถุcurrent ตำแหน่งและมัน speedเพิ่มจำนวนอย่างมีประสิทธิภาพทุกเฟรมที่กดปุ่มไปที่ตำแหน่ง
บันทึกสคริปต์นี้และกลับไปที่ Unity Unity จะอัปเดตสคริปต์ทั้งหมดโดยอัตโนมัติเมื่อคอมไพล์สำเร็จคุณจึงไม่ต้องแนบสคริปต์ซ้ำแล้วซ้ำอีก
ตอนนี้คุณทำเสร็จแล้วให้เปลี่ยนค่าของไฟล์ speedในคุณสมบัติของ GameObject เพื่อบอกว่า 0.8 นี่เป็นสิ่งสำคัญเนื่องจากค่าที่สูงขึ้นจะทำให้ผู้เล่นเคลื่อนที่เร็วเกินไป
ตอนนี้คลิก Play และพบกับเกมเล็ก ๆ เกมแรกของคุณ!
ลองกดปุ่มลูกศรและเลื่อนไปรอบ ๆ หากต้องการหยุดเกมเพียงกดเล่นอีกครั้ง คุณยังสามารถปรับความเร็วแบบเรียลไทม์ได้โดยไม่ต้องหยุดและเริ่มต้นใหม่ตลอดเวลา
ในบทเรียนถัดไปเราจะได้เรียนรู้เกี่ยวกับร่างกายแข็งและการชนกัน