บทเรียนนี้จะเป็นการเขียนเกมบนสมาร์ทโฟนอย่าง iOS หรือ Android ด้วย Unity3D ร่วมกับการควบคุมเกมด้วยระบบเซ็นเซอร์ Acceleration Control ของอุปกรณ์
เป็นตัวอย่างของเกมในการเอียงเครื่องโทรศัพท์ของเราเพื่อกลิ้งเจ้าลูกบอลไปเก็บไอเท็มต่างๆ ให้ครบ
ศึกษาบทเรียนการพัฒนาเกมด้วย Unity 3D ก่อนหน้านี้
สร้าง Project Unity 3D ขึ้นมาแล้วทำการออกแบบฉากด้วย Plane วางลงไปตรงกลาง Scene View
ต่อมาให้สร้าง Cube ปรกติล้อมกรอบของ Plane ให้เป็นกำแพงอย่างง่ายขึ้น 4 มุม
ไม่ต้องใส่ Is Trigger ใน Box Collider ของกำแพง ต่อจากนั้นให้ทำการวาง Sphere ทรงกลมลงบน Plane
ตั้งค่า Inspector Element ของเจ้า Sphere และเปลี่ยนชื่อมันเป็น Player ตามนี้
กำหนด Gravity ให้กับ RigidBody ของ Player ทำการ Add component เป็น Script ภาษา C# ว่า PlayerController.cs ลงไปเขียน code ดังนี้
using UnityEngine; using System.Collections; public class PlayerController : MonoBehaviour { public float ballSpeed = 25f; private Rigidbody playridgidBody; void Start() { playridgidBody = GetComponent<Rigidbody>(); } void FixedUpdate() { float move_x = Input.acceleration.x; float move_y = Input.acceleration.y; Vector3 playerMovement = new Vector3(move_x, 0.0f, move_y); playridgidBody.AddForce(playerMovement * ballSpeed); } void OnTriggerEnter(Collider other) { other.gameObject.SetActive(false); } }
กำหนด ความเร็วในการเคลื่อนของลูกบอลด้วยตัวแปร ballspeed อยู่ที่ 25f ตั้งค่า RidgidBody เป็น component หลักของ Player ที่ตัวแปร playerridgidBody แล้วกำหนดฟังก์ชัน FixedUpdate() โดยการรับค่า move_x และ move_y จากระบบ acceleration ทั้งแกน x,y จากเครื่องโทรศัพท์แล้วบังคับทิศทางการเคลื่อนที่ผสมผสานกันของ Player ผ่าน playerMovement ตั้งค่า onTriggerEnter เมื่อไปชนกับวัตถุใดๆ กำหนดให้วัตถุที่ชนหายไป
ต่อมาให้สร้าง Item ที่จะให้ ลูกบอลเราไปชนเก็บขึ้นมาจาก Cube จำนวนเท่าไรก็ได้ ตั้งค่า Box Collider ให้ Is Trigger เป็น true สำหรับโดนชนโดยลูกบอล และเมื่อถูกลูกบอลชนจะโดนบังคับให้หายไป ใส่ Script ของเจ้า Item นี้ว่า ItemController.cs มี code ดังนี้
using UnityEngine; using System.Collections; public class ItemController : MonoBehaviour { void Update () { transform.Rotate(new Vector3(30, 45, 60) * Time.deltaTime); } }
คำสั่งไม่มีอะไรมากแค่เป็นการแสดงการหมุนไปเรื่อยๆ ไม่ให้มันอยู่นิ่ง
สร้างกล้องขึ้นมาแล้วทำการตั้งค่าตามนี้
ใส่คำสั่ง CameraController.cs ลงไปที่กล้องเพื่อให้ทำการติดตามลูกบอลของเรา
using UnityEngine; using System.Collections; public class CameraController : MonoBehaviour { public GameObject player; public Vector3 offset; void Start () { offset = transform.position - player.transform.position; } void LateUpdate () { transform.position = player.transform.position + offset; } }
เปิดกล้องแล้วลาก Player ของเราไปวางใน player ของ Camera ก็เป็นอันเสร็จเรียบร้อย ให้ทำการเสียบสาย USB สมาร์ทโฟนของเรา แล้วทำการ Build Setting ลงโทรศัพท์มือถือ
ทดสอบเกมของเราโดยการเอียงโทรศัพท์ไปมาเพื่อเล่นเกม
ตัวอย่างการเล่นเกมบนมือถือ
จบบทความ จริงใน Net มี Tutorial เกมแบบนี้ให้ไปดาวน์โหลดเพียบเลยนะจะบอกให้