unity3d レベル1 -21ページ目

unity3d レベル1

unity3dでゲーム作りはじめました。
http://knr.ifdef.jp/
twitter: @knorsUni

HP:http://knr.ifdef.jp/mdkdefence/
体験版DL:http://db.tt/EL20Q837





なんとか体験版まで出来た。今回はセーブも実装出来た。
バグとかエラーとか無いといいなー。

これで、まどマギTDシリーズは一旦休憩。
あとはほとんど素材作りだけになると思うし。
このゲーム制作で色々とスキルアップ出来たのは大きな収穫。

今回覚えた便利なやつ

・SendMessage
・transform.Find
・true/false
・for
・switch

・自分が実際やった方法。


まずHierarchyからplaneを作ります。
(※別で作ったplaneでも何でもいいけどポリゴン数が低いのは注意)


マテリアルを新規作成し、ShaderをUnit→Transparent Cutout。

アルファ値を含んだテクスチャを用意。自分で作れなかったら↓の画像を保存。※ちょっと雑

unity3d レベル1 unity3d レベル1 unity3d レベル1

マテリアルのInspectorにあるAlpha cutoff、これで画像の表示領域(アルファ)を指定出来るっぽいので
これを弄ってLifeを表現してみる。


----------------------------------------

var life : float;//現在のLife

var lifeMax : float;//最大のLife

var damage : int;//ダメージ量

var lifeScale : float = 1.0;//現在のLife/最大のLife (0.0~1.0の数値にする)


var green : Texture2D;

var yellow : Texture2D;

var red : Texture2D;


function Update () {

if(Input.GetKeyDown("z")){//"z"キー押したらLife減らす

life -= damage;

}

if(Input.GetKeyDown("x")){//"x"キー押したらLife増やす

life += damage;

}

if(lifeScale >= 0.8){//残りLifeが80%以上だったら

renderer.material.mainTexture = green;

}

else if(lifeScale >= 0.3){//残りLifeが30%以上だったら

renderer.material.mainTexture = yellow;

}

else{//残りLifeが30%以下だったら

renderer.material.mainTexture = red;

}

lifeScale =life / lifeMax;//残りLifeの%

renderer.material.SetFloat("_Cutoff",1-lifeScale);//alpha cutoffの数値指定

}

---------------------------------------

Inspectorに出来たlife、lifeMax、damageに好きな数値を入れる。

赤字はLifeバーの色も変えたかったら。




・後で気付いて、こっちのほうが楽だと思ったけど、そうでもなかった方法。


Lifeバー(plane)のスケールを弄って表現する。
その場合、バーの中心でスケールが小さくなるので、
空のGameObjectを用意して、その下にバーを置く。
GameObjectの中心でスケールのサイズをLifeに比例させる。


unity3d レベル1


-----------------------------------------------

var life : float;

var lifeMax : float;

var damage : int;

var lifeScale : float = 1.0;


var lifeBar : Transform;//LifeBarのゲームオブジェクト


function Start(){

lifeBar = transform.Find("LifeBar");//LifeBarのゲームオブジェクト検索

}


function Update () {

if(Input.GetKeyDown("z")){

life -= damage;

}

if(Input.GetKeyDown("x")){

life += damage;

}

if(lifeScale >= 0.8){

renderer.material.mainTexture = green;

}

else if(lifeScale >= 0.3){

renderer.material.mainTexture = yellow;

}

else{

renderer.material.mainTexture = red;

}


lifeScale = life / lifeMax;

transform.localScale.x = lifeScale;

}

----------------------------------------

赤字はLifeバーの色も変えたかったら。



色を変える条件とかもっと良い書き方がありそうな感じ。

あと、Lifeバーはカメラのほうを常に向いていたほうがいい(ビルボード表示)けど、自分はよく理解していない…。


unity3d レベル1

落書き。

Zbrushもそうだけど、スカルプトツールの質感て何か好き。

このシェーダーをUnityに持っていけたらなー。