แสดงบทความที่มีป้ายกำกับ script แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ script แสดงบทความทั้งหมด

วันจันทร์ที่ 30 มีนาคม พ.ศ. 2558

แชร์โค้ด Unity : การหยุดเกมด้วย timeScale


การหยุดเกมทำได้หลายวิธี บางคนเขียนโค้ดเทพ อาจจะเขียนโค้ดเพื่อสั่งหยุดการทำงานขงสคริปทุกตัวในออบเจกทุกตัวได้ แต่สำหรับเบื้องต้นมีวิธีง่ายๆอยู่เหมือนกันแต่อาจจะมีข้อจำกัดบ้างซึ่งผมจะพูดถึงทีหลัง



วิธีที่เราจะใช้ในโค้ดนี้คือการปรับค่าของตัวแปร Time.deltaTime ซึ่งเป็นตัวแปรที่ควบคุมการคำนวณที่อ้างอิงเวลา(ความเร็ว)ภายในเกมนั่นเองได้แก่พวก rigidbody และคำสั่งที่มีการคูณ Time.deltaTime ภายในโค้ด โดยตามปกติค่านี้จะอยู่ที่ 1.0 ถ้าเราปรับเป็น 0.5 เกมก็จะช้าลงครึ่งนึง ถ้าปรับเป็น 2.0 เกมจะเร็วสองเท่า แต่สำหรับโค้ดตัวนี้จะเซตค่าให้เท่ากับ 0.0 เพื่อเป็นการหยุดเกมครับ ใครขี้เกียจอ่านก็ดูในคลิปได้เลยครับ

วันเสาร์ที่ 28 มีนาคม พ.ศ. 2558

การเชคปุ่มที่ถูกกดว่าเป็นปุ่มอะไร

     เกมส่วนใหญ่เรามักจะกำหนดเองว่าจะให้ผู้เล่นกดปุ่มไหนเพื่อทำแอคชั่นอะไร
เช่น w a s d เพื่อเดิน spacebar เพื่อกระโดด แต่สำหรับบางเกมเราต้องคอยเชคว่าผู้เล่นกดปุ่มไหนเพื่อนำไปเชคว่าผู้เล่นกดถูกปุ่มหรือเปล่า เช่นเกมแนวกดตาม เกมพิมดีด เกมเต้น


     ที่นี้ตามปกติในเกมประเภทแรกเราจะใช้ Input.GetKey("a") ในการเชคว่าเอ้ะมีการกดปุ่ม A ในเฟรมนี้มั้ยส่วนในเกมประเภทหลังที่พูดถึงถ้าจะทำแบบเดียวกันจะต้องไล่เชคปุ่มบนคีบอร์ดที่มีเป็นร้อยปุ่ม(มั้ง) เปลืองทั้งเวลาและทรัพยากรณ์ CPU เพราะฉะนั้นปกติเราจะใช้ Event ในการเชคกันครับ

วันเสาร์ที่ 17 มกราคม พ.ศ. 2558

แชร์โค้ด Unity : การตรวจจับวัตถุของ BOT

โค้ดนี้ได้ทำคลิปสอนวิธีการใช้งานคร่าวๆไว้ใน Youtube ครับ
ตัวโค้ดค่อนข้างยาวเลยขอแปะรูปไว้ให้อ่านกันง่ายๆนะครับ



สำหรับวิธีการใช้งาน
(ตอนก้อบโค้ดไปวางอย่าลืมเปลี่ยนชื่อไฟล์นะ)



using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class botVision : MonoBehaviour 
{
    public float range = 5;
    public float angleRange = 45;
    public int resolution = 10;

    public List<GameObjectseeingObj = new List<GameObject>();

    float angle = 0;

    void Update () 
    {
        seeingObj.Clear();

        for (int ct1 = 0ct1 < resolutionct1++)
        {
            for (int ct2 = -1ct2 <= 1ct2 += 2)
            {
                int oldListLen = seeingObj.Count;
                bool[] existListHash = new bool[oldListLen];

                angle = angleRange / resolution * ct1 * ct2;
                Ray ray = new Ray(transform.position,new Vector3(Mathf.Sin((angle + transform.eulerAngles.y) * Mathf.Deg2Rad), 0Mathf.Cos((angle + transform.eulerAngles.y) * Mathf.Deg2Rad)));
                RaycastHit hitData;

                if (Physics.Raycast(ray,out hitData,range))
                {
                    if (hitData.collider.gameObject != gameObject)
                        if(seeingObj.Contains(hitData.collider.gameObject) == false)
                            seeingObj.Add(hitData.collider.gameObject);
                }
            }
        }
    }
    
    //DEBUGGING ZONE//
    void OnDrawGizmos()
    {
        for (int ct1 = 0ct1 < resolutionct1++)
        {
            for (int ct2 = -1ct2 <= 1ct2 += 2)
            {
                angle = angleRange / resolution * ct1 * ct2;
                Gizmos.color = Color.yellow;
                Gizmos.DrawRay(transform.positionrange * new Vector3(Mathf.Sin((angle + transform.eulerAngles.y) * Mathf.Deg2Rad), 0Mathf.Cos((angle + transform.eulerAngles.y) * Mathf.Deg2Rad)));
            }
        }
    }
}


#6 สารบัญแชร์โค้ด

วันศุกร์ที่ 19 ธันวาคม พ.ศ. 2557

ข้อจำกัดของการทำเกมบน iOS ด้วย Unity



ผมว่าเรื่องข้อจำกัดขอ iOS ไม่ใช่สำหรับเฉพาะคนที่จะทำเกมบน iOS เท่านั้นนะครับ
เพราะวันนึงถ้าคิดเปลี่ยนใจจะมาเพิ่มแพลตฟอร์ม iOS นี้แล้ว ก็จะรู้ว่ามันไม่ใช่งาน
ง่ายๆเลยล่ะครับที่จะทำให้เกมของเราซัพพอร์ต iOS โดยที่ไม่เตรียมมาก่อนหน้า

ข้อมูลส่วนนี้ผมขออนุญาติดึงมาจากเว็บหลัก
ของ Unity มาแปลให้อ่านกันง่ายๆจากต้นฉบับนี้

ฟีเจอร์ต่างๆที่ไม่สามารถใช้งานในแพลตฟอร์ม iOS แบ่งเป็นหัวข้อตามนี้เลยครับ

วันอาทิตย์ที่ 21 กันยายน พ.ศ. 2557

สอน Unity : มาทำเกมกันเถอะ [Gunner Dodger]



เกม 2D แนว Surviving&Shooting วิ่ง หลบ ยิ่ง มุมมอง TopView
Tutorial ตอนนี้มีทั้งหมด 3 Part (ยังไม่เสร็จ) เกมหน้าตาเป็นยังไง คลิก

วันศุกร์ที่ 23 พฤษภาคม พ.ศ. 2557

[สอน C# for Unity] ตอนที่ 6 : Transform หมุน ขยับ ปรับขนาด



จากตอนที่แล้วได้พูดถึงการดึงค่าตัวแปรและการเรียกใช้งานฟังชั่นจากใน component กันไปเรียบร้อยแล้ว ตอนที่ 6 นี้จะมาสานต่อจากตอนที่ 5 ด้วยการแนะนำ component สุดฮิต Transform ที่ทุก GameObject ต้องมี ให้ทุกท่านได้รู้จักและนำไปใช้กัน

วันอังคารที่ 13 พฤษภาคม พ.ศ. 2557

[สอน C# for Unity] ตอนที่ 4 : คำสั่งที่เขียนไปทำงานตอนไหน?



ปกติในกานเขียนโปรแกรมธรรมดา จะมีลักษณะการเขียนคำสั่งเป็นชุด แล้วตั้งชื่อให้กลุ่มคำสั่งนั้น
แล้วเรียกใช้จากชื่อ ทำให้ไม่ต้องเขียนคำสั่งยาวๆซ้ำ เราเรียกลักษณะของชุดคำสั่งแบบนั้นว่า function

วันศุกร์ที่ 9 พฤษภาคม พ.ศ. 2557

[สอน C# for Unity] ตอนที่ 3 : สิ่งสำคัญสิ่งสุดท้าย if... else....



เอาละครับ ก่อนจะมาลงมือเขียนสคริปให้เกมของเรา ยังมีอีกอย่างนึงที่จำเป็นมากในการเขียนเกม
นั่นคือเงื่อนไข หรืออาจจะเรียกว่ากฎก็ได้ ว่าถ้าสิ่งไหนเกิดขึ้นเเล้วจะมีอะไรเกิดขึ้นตามมา


  • ถ้าโดนยิง -> ตาย จบเกม
  • ถ้าคลิกโดนและเวลายังไม่หมด -> ได้คะแนน
  • ถ้ากดปุ่ม spacebar -> กระโดด



วันพฤหัสบดีที่ 8 พฤษภาคม พ.ศ. 2557

[สอน C# for Unity] ตอนที่ 2 : ตัวแปร




ตัวแปรเป็นสิ่งที่ขาดไม่ได้เลยในการโปรแกรมเกม
นึกดูสิถ้าคุณเล่น flappy bird อยู่แต่กลับไม่มีตัวแปรเก็บคะแนนที่เราอุตส่าบินผ่านท่อเขียวๆพวกนั้นมา
เเล้วเราก็จะเบื่อกับเกมนั้นเพราะไม่มีคะแนนไปอวดเพื่อนและชวนไฝ้ว์ต่อ

วันพุธที่ 7 พฤษภาคม พ.ศ. 2557

[สอน C# for Unity] ตอนที่ 1 : สคริป C# เบื้องต้น




ใน Unity สคริป จะถือว่าเป็น Component ชนิดหนึ่งไม่ต่างจาก component ที่ทำให้วัตถุไปอยู่ตามตำแหน่งต่างๆอย่าง transform หรือ component ที่ทำให้มีคุณสมบัติทางฟิสิกส์อย่าง rigidbody



วัตถุที่มี component ที่เป็น script อยู่จะมีคุณสมบัติเป็นอย่างไรก็ขึ้นอยู่กับว่าเราจะใส่อะไรเข้าไปบ้าง โดยวิธีถ่ายทอดความต้องการของเราเข้าไปในวัตถุผ่าน script ก็ไม่พ้นการเขียนโปรแกรม เนื่องจากการเขียนโปรแกรมทำให้สามารถถ่ายทอดความต้องการได้อย่างยืดหยุ่นและครบถ้วนไม่ว่าเราต้องการจะให้เกมของเราเป็นอย่างไรเราก็สามารถทำให้มันเกิดขึ้นจริงได้หมด