Unity 3D

สร้างเทคนิคเกมตามหนังสยองขวัญ Lights Out ด้วย Unity 3D

ไอเดียจากหนังสยองขวัญ Lights Out (2016) เกี่ยวกับวิญญาณร้าย ที่จะปรากฏกายเวลาที่ไฟดับลงเพราะอยู่ในแสงไฟไม่ได้ บทความนี้เราจะมาทำเทคนิคเกมแนวนี้กันบน Unity 3D

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

และพอมันดึงมากมันก็ถูกสร้างเป็นหนังใหญ่ปี 2016 ครับ ชื่อ Lights Out เหมือนกัน

ไอเดียเกมก็คงทำตามหนังเลย คือกดปิดไฟผีก็จะปรากฏตัว เปิดไฟก็จะหายไป พอปิดอีกทีผีก็จะใกล้เข้ามา เหมาะกับการทำเกม VR เลยทีเดียว (ทำบุญปิดทองหลังพระมาบ่อยละ)

เริ่มพัฒนาเกมครับเปิด Unity 3D ขึ้นมาสร้าง Project ใหม่

screen-shot-2016-10-10-at-10-55-31-pm

สร้างฉากของเราอย่าใช้เวลามากนะครับ แค่ฉากเป็นห้องใส่ cube กันตำแหน่งหลังคาและพื้นเล็กน้อย

ออกแบบห้องตัวบ้าน
ออกแบบห้องตัวบ้าน
โมเดลตัวบ้าน และห้อง
โมเดลตัวบ้าน และห้อง
สร้าง Cube มากันตำแหน่งหลังคา และพื้น
สร้าง Cube มากันตำแหน่งหลังคา และพื้น
สร้าง Cube มากันตำแหน่งหลังคา และพื้น
สร้าง Cube มากันตำแหน่งหลังคา และพื้น

ไปที่เมนู Assets เลือก Import Package เลือก Characters เพื่อนำตัวละครสำเร็จรูปของ Unity นั่นคือ First Person เข้ามาใช้งาน

screen-shot-2016-10-10-at-11-07-58-pm

นำมาแค่ First Person นะครับ Ball และ Third Person ไม่จำเป็นเท่าไร ก็ไม่ต้องเอาเข้ามา

screen-shot-2016-10-10-at-11-08-18-pm

ลบ Main Camera ออกนำ First Person ลงไปวางในฉากให้เรียบร้อย

screen-shot-2016-10-10-at-11-03-59-pm

screen-shot-2016-10-10-at-11-21-51-pm

ไปที่ Inspector ส่วนของ Direction Lights ให้ Rotate แกน x เป็น -190 หรือเท่าไรก็ได้เพื่อให้ฉากมันมืดครับ

screen-shot-2016-10-10-at-11-09-53-pm

สร้าง Empty GameObject ขึ้นมาตั้งชื่อว่า “GameSystem” สร้าง C# ขึ้นมาชื่อว่า Lightout.cs ยังไม่ต้องเขียน Code

screen-shot-2016-10-10-at-11-11-47-pm

นำโมเดลผีจากที่ไหนก็ได้ลงไป ถ้าจะให้สมจริงทำ Animator Controller ท่ายืน Idle ให้น่ากลัวจะดีมากวางลงไปในฉากของเกมของเราครับ

screen-shot-2016-10-10-at-11-38-26-pm

มุมกล้องของตัวละครเราจะเห็นดังนี้

screen-shot-2016-10-10-at-11-38-33-pm

ต่อมาสร้าง PointLight ขึ้นมาวางตำแหน่งเป็นดวงไฟ นีออน บนเพดานให้สว่างทั่วห้องประมาณหนึ่ง

screen-shot-2016-10-11-at-12-01-35-am

เขียนโปรแกรมครับเปิดไฟล์ Lightout.cs ขึ้นมาเขียนคำสั่ง ชิลๆ สบายๆ ตามนี้เลย

using UnityEngine;
using System.Collections;

public class Lightout : MonoBehaviour {
    public GameObject theLight;
    public GameObject Ghost;
    public bool light = true;
    public float objectSpeed = 1f;
    void Start () {
        Ghost.SetActive(false);
    }
    void Update () {
        if (Input.GetButtonDown("Fire1")){
            Debug.Log("Off");
            Ghost.SetActive(true);
            theLight.SetActive(false);
            Ghost.transform.Translate(0, 0, objectSpeed);
        }
        if (Input.GetButtonUp("Fire1")){
            Debug.Log("On");
            Ghost.SetActive(false);
            theLight.SetActive(true);
            Ghost.transform.Translate(0, 0, 0);
        }
    }

}

ส่วนของการประกาศ GameObject คือเราจะควบคุม GameObject ของแสง และผีในบรรทัดนี้

public GameObject theLight;
public GameObject Ghost;

screen-shot-2016-10-11-at-12-09-49-am

ลาก PointLight ไปวางที่ the Light ได้เลย และลาก Model ผี ของเราไปวางที่ Ghost ทีนี้มาดูคำสั่งควบคุมครับ เปิดเกมมากำหนดให้ผีมองไม่เห็นก่อน

void Start () {
        Ghost.SetActive(false);
    }

เมื่อเริ่มเกม คลิกเมาส์ซ้ายค้างจะปิดไฟ การทำงานคือ

if (Input.GetButtonDown("Fire1")){
    Debug.Log("Off");
    Ghost.SetActive(true);
    theLight.SetActive(false);
    Ghost.transform.Translate(0, 0, objectSpeed);
}

ผีจะปรากฏ

Ghost.SetActive(true);

พร้อมการเคลื่อนที่เข้ามาเรื่อยๆ ตาม objectSpeed กำหนดไว้แล้วคือ

public float objectSpeed = 1f;
Ghost.transform.Translate(0, 0, objectSpeed);

ไฟจะดับโดยการ SetActive ของ Point Light ให้เป็น False

theLight.SetActive(false);

และถ้ายกนิ้วออกจากเมาส์ไฟจะเปิด ผีจะหายไป และกำหนดให้มันไม่เคลื่อนที่ตามคำสั่ง

if (Input.GetButtonUp("Fire1")){
    Debug.Log("On");
    Ghost.SetActive(false);
    theLight.SetActive(true);
    Ghost.transform.Translate(0, 0, 0);
}

ทดสอบดูสิ

ไฟเปิดไม่มีผี
ไฟเปิดไม่มีผี
ไฟดับผีก็เดินเข้ามา
ไฟดับผีก็เดินเข้ามา
เดินเข้ามาเรื่อยๆ แบบในหนัง
เดินเข้ามาเรื่อยๆ แบบในหนัง

Script ขำๆ นั่งดูหนังเสร็จก็ลองเอามาเขียนดู 15 นาทีเสร็จ สบายๆ ให้เด็กๆ เอาไปทำโปรเจ็คเกม VR สบายๆ ได้เลยครับ ตัวอย่าง Video นะครับ

Source Code ดาวน์โหลดที่นี่เลย: https://drive.google.com/file/d/0B08PZSOd4UmObmQ4NXZxVWoxZWM/view?usp=sharing

Asst. Prof. Banyapon Poolsawas

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

Related Articles

Back to top button

Adblock Detected

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