FC2ブログ
    06 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.» 08

    ハルシオンシステムの気ままBlog

    株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

     

    【Unity】Unity&Orthelloによる2Dゲーム作成⑤ 

    はいはーい 月曜の坂内っす。

    ちょっとしたOrthelloを使用した時のコツを。

    普通のオブジェクトの場合、iTweenを使用することで簡単に透明度を変更できます。
    透明度を1⇒0⇒1と繰り返すことで、オブジェクトの点滅を実装することができます。

    cubeというオブジェクトを作成し、マテリアルを張ります。
    透過が可能なShaderを指定します。
    そして、以下のコード書くことでcubeオブジェクトの点滅が可能になります。
    void Start(){
    GameObject cube = GameObject.Find("cube");
    iTween.ColorTo(cube,iTween.Hash("a",0,"looptype","pingpong","time",2f));
    }

    上記コードの説明をしますと、「cubeオブジェクトの色要素 a (アルファは透過度)を2秒かけて0にする。
    0になったら今度は2秒かけて1にする(pingpongによって動作を繰り返す)」となります。

    これで簡単に点滅が可能です。

    しかし!BUT!!!
    OrthelloSpriteは上記と同じことを行うとエラーがでてしまいます。
    Material doesn't have a color property '_Color'
    UnityEngine.Material:GetColor(String)
    iTween:GenerateColorToTargets() (at Assets/iTween/Plugins/iTween.cs:3338)
    iTween:GenerateTargets() (at Assets/iTween/Plugins/iTween.cs:3144)
    iTween:TweenStart() (at Assets/iTween/Plugins/iTween.cs:4603)
    c__Iterator7:MoveNext() (at Assets/iTween/Plugins/iTween.cs:6567)

    ナゼカ?

    エラーをみると、Colorプロパティが無いといわれます。
    そう、OrthelloSpriteではShaderが「mobile/Particles/Alpha Blended」になるため、Colorプロパティが存在しないからです。

    しかし、よく見るとOTSpriteの中に「Alpha」というプロパティが存在します。


    これを0⇒1⇒0とすることで、点滅を実装することが可能です。

    では、どのようにこれをいじるのか?

    iTweenのメソッドには「ValueTo」というものが用意されています。
    これは、値をaからbにするというもので、使い方は以下のように使います(たぶん)。
    void Start(){
    GameObject cube = GameObject.Find("cube");
    iTween.ValueTo(gameObject,iTween.Hash("from",0,"to",1,
             "time",2f,"onupdate","ValueChange"));
    }

    void ValueChange(float value){
    print (value);
    }
    0から1まで2秒かけて変わる。


    となります。
    これを踏まえて、以下のようにコードを書けば・・・・
    using UnityEngine;
    using System.Collections;

    [ExecuteInEditMode]
    public class Test : MonoBehaviour {

    OTSprite cubeSprite;

    void Start(){
    cubeSprite = GameObject.Find("cube").GetComponent();
    iTween.ValueTo(gameObject,iTween.Hash("from",0,"to",1,"time",2f,
    "looptype","pingpong","onupdate","ValueChange"));
    }

    void ValueChange(float value){
    cubeSprite.alpha = value;
    }
    }

    こんな感じで、OrthelloのSpriteを点滅することができます。

    以上!なにかのお役に立てたらこれ幸い。

    Category: 開発日記(Unity)

    Thread: 日記

    Janre: 日記

    Tag: Android  Unity  Orthello  ゲーム  Sprite  iTween 
    tb 0 : cm 0   

    コメント

    コメントの投稿

    Secret

    トラックバック

    トラックバックURL
    →http://halcyonsystemblog.jp/tb.php/36-6e81095b
    この記事にトラックバックする(FC2ブログユーザー)