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を元に戻す処理が必要ですね。
以下のサイトを参考にさせて頂きました。
関連:
【Unity】Scene内のGameObjectをポーズ(一時停止)させる方法 - テクノモンキー(サブ)
【Unity】Admobの広告が表示されない場合に試すべきこと - テクノモンキーのアプリ開発日記
UnityでGameObjectの子を取得して削除する方法 - テクノモンキーのアプリ開発日記