テクノモンキー(サブ)

テクノモンキーのニュースブログです。 主に新作ゲームアプリやAmazonプライムビデオのレビュー、iOSやAndroid、Unityのアプリ開発に関する情報や考え事などを気軽に発信します。

【Unity】プレイヤーがダメージを受けた時に点滅させる方法

https://unity3d.com/files/images/ogimg.jpg?1


Unityでアクションゲームを作っているんですが、
「プレイヤーが敵に当たった時、点滅させて一定時間無敵状態にする」っていうのをやってみました。


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

using DG.Tweening;

public class PlayerManager : MonoBehaviour {
	
	private bool isDamaged = false; //敵に当たったか

	void Start () {
		//テスト用
		isDamaged = true;
	}

	void Update () {		
	}

	void FixedUpdate () {
		//ダメージを受けた時の処理
		if(isDamaged){
			float level = Mathf.Abs(Mathf.Sin(Time.time * 10));
			gameObject.GetComponent<SpriteRenderer> ().color =  new Color(1f,1f,1f,level);
		}
	}
}


敵に当たったかの判定がisDamagedで、trueになった場合(敵に当たった場合)にダメージを受けたとして点滅させます。

GameObjectのSpriteRendererの色を切り替えることで点滅しているように見せます。


上記の場合だと、isDamagedが最初からtrueなので、点滅し続けます。


プレイヤーがダメージを受けた → isDamagedをtrueにする
isDamagedがtrue → プレイヤーを点滅させる


こちらには書いてないですが実際に使う場合は点滅後、 isDamagedをfalseにしてSpriteRendererのcolorのalphaを元に戻す処理が必要ですね。


以下のサイトを参考にさせて頂きました。



raharu0425.hatenablog.com


関連:
【Unity】Scene内のGameObjectをポーズ(一時停止)させる方法 - テクノモンキー(サブ)
【Unity】Admobの広告が表示されない場合に試すべきこと - テクノモンキーのアプリ開発日記
UnityでGameObjectの子を取得して削除する方法 - テクノモンキーのアプリ開発日記