Game DevelopmentUnity 3D

Unity 3D การเขียนเกมบนสมาร์ทโฟนร่วมกับ Acceleration Control

บทเรียนนี้จะเป็นการเขียนเกมบนสมาร์ทโฟนอย่าง iOS หรือ Android ด้วย Unity3D ร่วมกับการควบคุมเกมด้วยระบบเซ็นเซอร์ Acceleration Control ของอุปกรณ์

เป็นตัวอย่างของเกมในการเอียงเครื่องโทรศัพท์ของเราเพื่อกลิ้งเจ้าลูกบอลไปเก็บไอเท็มต่างๆ ให้ครบ

ศึกษาบทเรียนการพัฒนาเกมด้วย Unity 3D ก่อนหน้านี้

สร้าง Project Unity 3D ขึ้นมาแล้วทำการออกแบบฉากด้วย Plane วางลงไปตรงกลาง Scene View

วาง Plane ลงไปใน Scene View
วาง Plane ลงไปใน Scene View

ต่อมาให้สร้าง Cube ปรกติล้อมกรอบของ Plane ให้เป็นกำแพงอย่างง่ายขึ้น 4 มุม

สร้างกำแพงด้วย Cube
สร้างกำแพงด้วย Cube

ไม่ต้องใส่ Is Trigger ใน Box Collider ของกำแพง ต่อจากนั้นให้ทำการวาง Sphere ทรงกลมลงบน Plane

วาง Sphere ลงบน Plane
วาง Sphere ลงบน Plane

ตั้งค่า Inspector Element ของเจ้า Sphere และเปลี่ยนชื่อมันเป็น Player ตามนี้

mobile-rotate-4

กำหนด 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 ขึ้นมา
สร้าง Item Box ขึ้นมา

ต่อมาให้สร้าง 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);
    }
}

คำสั่งไม่มีอะไรมากแค่เป็นการแสดงการหมุนไปเรื่อยๆ ไม่ให้มันอยู่นิ่ง

mobile-rotate-7

สร้างกล้องขึ้นมาแล้วทำการตั้งค่าตามนี้

mobile-rotate-6

ใส่คำสั่ง 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 ลงโทรศัพท์มือถือ

mobile-rotate-8

ทดสอบเกมของเราโดยการเอียงโทรศัพท์ไปมาเพื่อเล่นเกม

unity3d-ball

ตัวอย่างการเล่นเกมบนมือถือ

จบบทความ จริงใน Net มี Tutorial เกมแบบนี้ให้ไปดาวน์โหลดเพียบเลยนะจะบอกให้

Asst. Prof. Banyapon Poolsawas

อาจารย์ประจำสาขาวิชาการออกแบบเชิงโต้ตอบ และการพัฒนาเกม วิทยาลัยครีเอทีฟดีไซน์ & เอ็นเตอร์เทนเมนต์เทคโนโลยี มหาวิทยาลัยธุรกิจบัณฑิตย์ ผู้ก่อตั้ง บริษัท Daydev Co., Ltd, (เดย์เดฟ จำกัด)

Related Articles

Back to top button

Adblock Detected

เราตรวจพบว่าคุณใช้ Adblock บนบราวเซอร์ของคุณ,กรุณาปิดระบบ Adblock ก่อนเข้าอ่าน Content ของเรานะครับ, ถือว่าช่วยเหลือกัน