2011年7月24日 星期日

蚊語錄

記錄自己說過,且還不錯的觀念

經典遊戲之所以經典是因為它的獨特性
當延續好幾代都差不多或者看起來感覺都一樣,那它就爛掉了

2011年7月20日 星期三

UNITY3D - 圖片淡入淡出

圖片淡入淡出其實跟GameObject逐漸透明消失的做法類似
只要改圖片本身的透明度就好了
要記得一點是顏色跟透明度的值是(x/256)的float值,不要以為直接塞1~256的值就可以...

圖片淡入
=========================================================================
function Start ()
{
guiTexture.color.a = 0; //讓圖片一開始為透明
}

function Update ()
{
if(guiTexture.color.a < 1)
{
guiTexture.color.a = guiTexture.color.a + Time.deltaTime; //讓圖片隨時間變不透明
}
}


=========================================================================

畫面淡出
=========================================================================

function Start ()
{
guiTexture.color.a = 1; //讓圖片一開始為不透明
}

function Update ()
{
if(guiTexture.color.a < 1) 
{
guiTexture.color.a = guiTexture.color.a - Time.deltaTime; //讓圖片隨時間變透明
}
}

=========================================================================

2011年7月13日 星期三

UNITY3D - 連續貼圖

U3D不支援顯示gif檔案,但是我們可以利用程式來將一連串的靜態圖片顯示得跟動態圖片無異。
首先建立一個empty object然後加入下面component script。

=======================================================================
var aTexture : Texture[]; //靜態圖片組
var framePerSecond : int; //每秒播放張數
var x : int; //x軸位置(以pixel為單位)
var y : int; //y軸位置(以pixel為單位)
private var startTime : float;
function Start () {
    startTime = Time.time; //記錄開始時間,確保圖從第一張開始放。
}
function OnGUI () {
    var index : int = ((Time.time - startTime) * framePerSecond) % aTexture.Length;
    GUI.DrawTexture(Rect(x, y, aTexture[index].width, aTexture[index].height), aTexture[index], ScaleMode.StretchToFill, true, 0);
}

=======================================================================
加入component後將靜態圖按順序設給aTexture以及設定framePerSecond與XY軸就可以看到在設好的(x,y)上顯示靜態圖片組成的動畫了。

手機測試

測試手機版blogger效果...上課太無聊,如果效果不錯之後就上課寫教學好了。

2011年7月3日 星期日

UNITY3D - GameObject逐漸透明消失

private var startTime : float;
private var alpha : float = 255.0f;

function Start () {
startTime = Time.time;
}

function Update () {
    if((Time.time - startTime) > 5)
    {
    var render = gameObject.GetComponentInChildren(Renderer);
    alpha = alpha - 10.0f;
    render.material.color.a = alpha / 255.0f;
    if(render.material.color.a <= 0)
    Destroy(gameObject);
    }
}
用處:用在怪被打死後逐漸消失。

以上程式功能為物件產生出來後經過5秒,然後將render的透明度逐漸遞減,當透明度低於0則清除此物件。注:Material的Shader必須用允許透明的Shader。