![](https://www.daydev.com/wp-content/uploads/2016/05/unity3d-ball.png)
บทเรียนนี้จะเป็นการเขียนเกมบนสมาร์ทโฟนอย่าง iOS หรือ Android ด้วย Unity3D ร่วมกับการควบคุมเกมด้วยระบบเซ็นเซอร์ Acceleration Control ของอุปกรณ์
เป็นตัวอย่างของเกมในการเอียงเครื่องโทรศัพท์ของเราเพื่อกลิ้งเจ้าลูกบอลไปเก็บไอเท็มต่างๆ ให้ครบ
ศึกษาบทเรียนการพัฒนาเกมด้วย Unity 3D ก่อนหน้านี้
สร้าง Project Unity 3D ขึ้นมาแล้วทำการออกแบบฉากด้วย Plane วางลงไปตรงกลาง Scene View
![วาง Plane ลงไปใน Scene View](https://www.daydev.com/wp-content/uploads/2016/05/mobile-rotate-1.png)
ต่อมาให้สร้าง Cube ปรกติล้อมกรอบของ Plane ให้เป็นกำแพงอย่างง่ายขึ้น 4 มุม
![สร้างกำแพงด้วย Cube](https://www.daydev.com/wp-content/uploads/2016/05/mobile-rotate-2.png)
ไม่ต้องใส่ Is Trigger ใน Box Collider ของกำแพง ต่อจากนั้นให้ทำการวาง Sphere ทรงกลมลงบน Plane
![วาง Sphere ลงบน Plane](https://www.daydev.com/wp-content/uploads/2016/05/mobile-rotate-3.png)
ตั้งค่า 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 Box ขึ้นมา](https://www.daydev.com/wp-content/uploads/2016/05/mobile-rotate-5.png)
ต่อมาให้สร้าง 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 เกมแบบนี้ให้ไปดาวน์โหลดเพียบเลยนะจะบอกให้