FeaturedGame DevelopmentGame EngineUnity 3D

Workshop การเขียนเกม 3มิติ ด้วย Unity และ Javascript ตอนที่ 1

บทเรียน Workshop การสร้างเกม 3 มิติ ด้วย Unity 3D สาย Javascript กับการสร้างเกมแบบง่ายสำหรับผู้ที่สนใจพัฒนาเกม ตัวอย่างเกมแนว Click to Jump โดยแตะหรือคลิก

ก่อนจะเรียนรู้ในบทเรียนนี้ลองไป ทดสอบการเขียนเกมเบื้องต้นใน Unity 3D กับ C# ก่อนไหมครับเพราะผมจะอ้างอิงเรื่อง Basic ต่างๆของบทเรียนเก่าๆ มาใช้กับ Workshop นี้จะได้ไม่เสียเวลา และคิดว่าการศึกษามันไม่ยากอะไร คงไม่น่าจะมีคนงง

มาคิด Story Board ของเกมคร่าวๆ เกมนี้จะเป็นตัวการ์ตูน Pucca ขับรถฟีโน่ เก็บเหรียญตามถนน และคอยกระโดดหลบกล่องลังที่ขวางทางขณะขับอยู่

ถ้าเขียนเสร้จแล้วจะเป็นเช่นนี้ แต่อันนี้คือภาพในหัว
ถ้าเขียนเสร้จแล้วจะเป็นเช่นนี้ แต่อันนี้คือภาพในหัว

ลักษณะของเกมคือ เกมแนว 2.5D หรือ 3 มิติครึ่งๆ กึ่งๆ 2 มิติเพราะจะเห็นมุมมองแนว Side Scrolling Game แนวเดียวเพียงแค่ วัตถุต่างๆจะเป็น 3 มิติ

วิธีการบังคับ: เนื่องจากเกมนี้จะ เน้นไปลงบน Android และ iOS และการเล่นควรจะไม่ยากเกินไป การบังคับคือ ตัวละครเลื่อนไปเรื่อยๆ แต่ใช้ นิ้วแตะหน้าจอเพื่อกระโดดครับ

เปิด Unity 3D ขึ้นมา บันทึก Scene แรกเป็นชื่อ Game

สร้าง scene ใหม่
สร้าง scene ใหม่

ให้สร้างตัวอย่างฉากเหมือนในบทความนี้ครับ วาง Cube ตั้งชื่อว่า Ground และ Wall ลงไป

https://www.daydev.com/2014/unity-temple-run-tutorial.html

(คงไม่ยากเกินความสามารถของเราทุกคน)

โมเดล 3 มิติในเกมนี้ ผมจะไปหาจาก 3D Warehouse ของ Google Sketchup แล้วทำการ Export ออกมาเป็น *.dae ซึ่งต้องใช้ตัว Pro ครับ แต่ถ้าไม่มีเงินใช้ตัว Pro ก็ดาวน์โหลดเจ้านี้ไป SketchUp Make เพื่อทำการ Export อย่างเดียว

ดาวน์โหลดแล้วไป Export เป็น dae ใน SketchUp Make
ดาวน์โหลดแล้วไป Export เป็น dae ใน SketchUp Make
ดาวน์โหลดแล้วไป Export เป็น dae ใน SketchUp Make
ดาวน์โหลดแล้วไป Export เป็น dae ใน SketchUp Make
ดาวน์โหลดแล้วไป Export เป็น dae ใน SketchUp Make
ดาวน์โหลดแล้วไป Export เป็น dae ใน SketchUp Make

ลากโมเดลเข้าไปใน Project ของ Unity แล้วสร้าง Animation ของเราอย่างง่าย ให้ดูที่เมนู Inspector เลือก Select

เลือก Select
เลือก Select

ทำการ เลือก Rig ปรับเป็น Legacy แล้วเลือก Store in root (New) กด Apply

เลือกตามนี้
เลือกตามนี้

ไปที่แถบที่ชื่อ Animation ให้เลือก Frame แบบ Flash Animation ทำตามตัวอย่างนี้

สร้าง animation เหมือน Adobe Flash (ที่น่าจะไม่รอด)
สร้าง animation เหมือน Adobe Flash (ที่น่าจะไม่รอด)

 

สำหรับ Script ของ Ground และ Wall นั้นให้สร้าง Javascript ขึ้นมาครับ (ต่างจากบทก่อนหน้านี้เป็น C#) ตั้งชื่อว่า Road.js เขียนคำสั่งดังนี้

#pragma strict
var speed : float = 1.3f;
var offset : float;

function Start () {

}

function Update () {

	offset = Time.time * speed;
	renderer.material.mainTextureOffset= new Vector2(0,-offset);

}

นำไปใส่ใน GameObject ชื่อ Wall และ Ground ทันทีเลยครับ

ใส่ Script ลงไป
ใส่ Script ลงไป

ตั้งค่า Main Camera ดังนี้

ตั้งค่า Main Camera
ตั้งค่า Main Camera

คลิกที่ ตัวละครใส่ Box Collider, Rigidbody และ Character Controller ลงไป พร้อมเตรียมไฟล์ชื่อ Player.js ไว้

ตั้งค่าให้เหมือนตัวอย่าง
ตั้งค่าให้เหมือนตัวอย่าง

ไฟล์ Player.js เขียนคำสั่งดังนี้

#pragma strict
var speed : float = 6.0;
var jumpSpeed : float = 8.0;
var gravity : float = 30.0;
private var isGrounded : boolean = false;
private var PlayerMoveDirection : Vector3 = Vector3.zero;


function Start () {

}

function Update () {
	
		var controller : CharacterController = GetComponent(CharacterController);
		if (controller.isGrounded) {
			
			if(Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began){
				PlayerMoveDirection.y = jumpSpeed;
			}
			
			if(Input.GetMouseButtonDown(0)) {
				PlayerMoveDirection.y = jumpSpeed;
			}
		}
		PlayerMoveDirection.y -= gravity * Time.deltaTime;
		controller.Move(PlayerMoveDirection * Time.deltaTime);
}

อธิบายคำสั่ง ในคำสั่ง

if(Input.GetMouseButtonDown(0)) {
				PlayerMoveDirection.y = jumpSpeed;
			}

คือการบังคับตัวละครให้กระโดดขึ้น เมื่อมีการคลิก Mouse และคำสั่ง

if(Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began){
				PlayerMoveDirection.y = jumpSpeed;
			}

คือการบังคับตัวละครให้กระโดดขึ้น เมื่อมีการแตะที่หน้าจอ ลองทดสอบ

คลิก Mouse หรือแตะหน้าจอ (ถ้าทำเป็น apk) เพื่อกระโดด
คลิก Mouse หรือแตะหน้าจอ (ถ้าทำเป็น apk) เพื่อกระโดด

จบบทเรียน Workshop ที่ 1 สำหรับการเขียนเกม Unity สาย Javascript ครับ ทบทวนบทเรียนเก่าๆ ได้ที่

Asst. Prof. Banyapon Poolsawas

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

Related Articles

Back to top button

Adblock Detected

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