
現在作成中のアプリ内でレーザー光線のようなオブジェクトを作りました。
その中で、よりレーザーっぽく見えるようにオブジェクトのスプライトを点滅させることにしました。
点滅させる為のコードは、とても簡単に作成できるのでとりあえず覚えておくと良いと思います。
では、早速コードの作り方に入ります。
はじめに
今回作成した「レーザー」のようなオブジェクトの素材は以下のようなもので作ってみました。
画像だけでは解りにくいので、Youtubeに動画をアップする予定です。
(動画が上がり次第、このページにも貼り付けます。)
2015/12/24追記:
動画をアップしたので載せておきます。
このレーザーの画像を拡大すると以下のようになります。

※この画像は自由に使うことができますが、実際にゲームで使う時はちゃんと上手な画像を用意することを推奨します。
このような画像もGIMPを使えば簡単に作ることができます。
点滅するコード
では肝心のコードですが、とても簡単なコードを追加するだけでオブジェクトを点滅させることができます。
以下のように書いてみてください。
using UnityEngine;
using System.Collections;
public class Laser : MonoBehaviour {
GameObject[] LaserObj;
bool Flash = true;
void Start () {
LaserObj = GameObject.FindGameObjectsWithTag ("LaserObj");
StartCoroutine ("Flashing");
}
IEnumerator Flashing(){
while (Flash) {
yield return new WaitForSeconds (1.0f);
foreach (GameObject laserObj in LaserObj) {
laserObj.GetComponent ().enabled = !laserObj.GetComponent ().enabled;
}
}
}
}
このコードの説明に入ります。
StartCoroutine(“Flashing”);: -> IEnumerator Flashing( ) を呼び出す
IEnumerator Flashing: -> 点滅させる
Flashing内
Flashing内をさらに詳しく説明していきます。
foreach(Gameobject laserObj in LaserObj){: -> 複数オブジェクトに処理を追加する時に必要です。
laserObj.GetComponent
この中で最も重要な行は最後の1文です。
当然どのコードが足りなくても動かなくなるのですが、最後の行でスプライトを表示させたり、消したりしているので必ず必要です。
このコードを点滅させたいオブジェクトに追加してみてください。オブジェクトの画像が点滅するようになっていれば成功です。
また、点滅の速度がおかしいと思ったら「WaitForSeconds(XX)」のXXを変更してみてください。
ちなみに私が点滅させているオブジェクトは0.03fにしてあります。
かなり早いので調整してください。
※XXはfloat型なのでX.Xにした場合、X.Xfのように「f」をつけないとエラーを吐きます。
XXを調整してゆっくり点滅するようにすると、別の使い方もできます。
Flashing内にコライダーのON OFFを変更したりできるので面白い処理ができると思います。
同じようなコードで使い分けることができますね。
まとめ
今回は点滅させるオブジェクトの作り方を紹介しました。
オブジェクトの点滅はゲームのギミックなどで使える場面が多くあります。
コードの中身は「ついたり 消えたり」しているだけなのでとても簡単です。
点滅させたいと思った時に、すぐコードを書けるように今回の方法を覚えておきましょう。
ではまた。