วันพุธที่ 31 ธันวาคม พ.ศ. 2557

แชร์โค้ด Unity : เปลี่ยนสี background กล้อง

ใช้ฟังชั่น Color.Lerp() ในการเขยิบค่าสีเดิมของแบคกราวกล้อง ให้ค่อยๆกลายไปเป็นสีใหม่ตามค่าสีที่ใส่ตัวแปร changeTo

การใช้งานให้ทำการใส่ค่าสีที่ต้องการเข้าไปในตัวแปร changeTo
อาจจะสั่งเปลี่ยนสีจากสคริปอื่นหรือตั้งเงื่อนไขการเปลี่ยนสีในสคริปนี้เลยก็ได้

using UnityEngine;
using System.Collections;

public class cameraBG : MonoBehaviour 
{
    public Color changeTo;

    void Update () 
    {
        camera.backgroundColor = Color.Lerp(camera.backgroundColorcurrentColor , Time.deltaTime);    
    }
}

แชร์โค้ด Unity : ตัวหนังสือลอยจาง

เป็นโค้ดควบคุมเอฟเฟกตัวหนังสือให้ลอยขึ้นและจางหายไป
ใช้กับตัวคู่กับวัตถุที่แสดงผลตัวอักษรด้วย TextMesh นะครับ

การใช้งานให้ลากวัตถุใส่ในตัวแปรก่อนจากใน Editor 
ใส่ข้อความที่ต้องการให้แสดงใน  text
ใส่ตำแหน่งที่ต้องการแสดงผลใน  popPos
ใส่สีเริ่มต้นใน startColor (สีจะจางลง)

using UnityEngine;
using System.Collections;

public class floatText : MonoBehaviour
{
    public TextMesh tm;
    public Vector3 popPos;
    public string text;
    public Color startColor;


    float timeCount = 0;

    void Start()
    {
        tm.text = text;
        transform.position = popPos;
        tm.color = startColor;
    }

    void Update () 
    {
        transform.position += Vector3.up *Time.deltaTime;
    
        timeCount += Time.deltaTime;

        if(timeCount > 1)
            tm.color -= new Color(000Time.deltaTime*5f);
    }
}

แชร์โค้ด Unity : เอฟเฟกสีจาง

ใช้วิธีค่อยๆลดค่า alpha ของสีที่อยู่ใน component ที่ควบคุมการแสดงผบของวัตถุนั้นอยู่ สำหรับเกม 3D ปกติจะเป็น mesh renderer สามารถดึงค่าสีได้จาก gameObject.renderer.material.color ส่วนในเกม 2D ที่ใช้ SpriteRenderer จะต้องทำการลากตัวนี้ขึ้นมาใส่เข้ามาก่อนถึงจะปรับเปลี่ยนค่าสีได้

โค้ดนี้ผมใช้บ่อยมากครับ ถ้าใครมีโค้ดที่ดีกว่านี้ก็แนะนำด้วยนะครับ :)

โค้ดสำหรับ 3D ที่ใช้ mesh renderer

using UnityEngine;
using System.Collections;

public class fadeOut3D : MonoBehaviour 

{
    void Update () 
    {
        renderer.material.color -= new Color (000Time.deltaTime);

        //พอสีจางจนมองไม่เห็นก็ Destroy วัตถุ
        if (renderer.material.color.a <= 0)
            Destroy (gameObject);
    }

}


วันอังคารที่ 30 ธันวาคม พ.ศ. 2557

แชร์โค้ด Unity : บอลเด้งขอบจอ

ปัญหาใหญ่ของการทำการเด้งแบบนี้คือถ้าเราใช้การเด้งกับ collider ตามปกติ เราจะไม่รู้ว่าขอบจออยู่ตรงไหนเราเอา collider ไปวางไม่ถูกที่เพราะจอของแต่ละเครื่องมันอัตราส่วนหรือขนาดไม่เท่ากัน เลยเลยใช้คำสั่ง Camera.main.ScreenToWorldPoint() เพื่อหาตำแหน่งขอบจอแล้วนำมากำหนดระยะการเด้งของลูกบอล โค้ดอาจจะยาวๆก็ลองแกะกันดูเนาะ โค้ดส่วนนี้ได้เอาไปใช้งานจริงในเกม Kick it Up! บน Android ก็ลองเล่นกันดูได้

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

รวมโค้ดทั้งหมดที่แชร์บนบล้อก(6)
กด Ctrl + F เพื่อค้นหาจากชื่อ

ตัวหนังสือลอยจาง
บอลเด้งขอบจอ
เปลี่ยนสี background กล้อง
ส่งตัวแปรข้ามคลาส
เอฟเฟกสีจาง
อักษรลอยจาง
การมองเห็นของบอต
แสดงกราฟคลื่นเสียง

- ENGLISH-
Camera background color transition
Edge bounce
Effect Fade Color
Fade Color
Float Text
Pass variable between class
Bot visible range and get object
Sound wave visualizer


แชร์โค้ด Unity : ส่งตัวแปรข้ามคลาส

ตัวอย่างโค้ดการส่งตัวแปรข้ามคลาส
ส่งตัวแปร score จากคลาส a ไปยังคลาส b1 และ b2 (ใช้คนละวิธีกัน)
หรืออาจจะบอกว่าเป็นการเรียกตัวแปร score จากคลาสอื่นก็ได้

โค้ดตัวแรก class a

using UnityEngine;
using System.Collections;

public class a : MonoBehaviour
{
public int score = 0;

void Update ()
    {
//Do something with score
        score++;
}
}

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

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



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

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

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

วันอาทิตย์ที่ 14 ธันวาคม พ.ศ. 2557

[Setup] เตรียมทำเกม Android บน Mac OS X



บทความนี้นะครับ ผมจะมาบอกขั้นตอนการเตรียมเครื่องมือที่จำเป็นสำหรับการ Build เกมจาก Unity ลงใน Android ด้วยเครื่อง Mac นะครับ (ฉบับมือใหม่แกะกล่องเพราะผมเองก็พึ่งแกะ)