###フェードアウト
アタッチするMaterialが透明度の変更に対応する必要があります。
Rendering モードが transparent モードの一つであり、Opaque 以外に設定する
https://docs.unity3d.com/jp/current/Manual/StandardShaderMaterialParameterAlbedoColor.html
###浄化されるような感じで上にフェードアウト
シェーダーを書く必要があります、僕は書けないのでShuriken を使ってそれっぽいエフェクトを作ると思います。
###コード
上記をふまえつつ、3秒後に復活するスクリプトのサンプルです。
オブジェクトの構成をこんな感じにすると動きます。
C#
1 using System . Collections ;
2 using System . Collections . Generic ;
3 using UnityEngine ;
4
5 public class DestroyEnemy : MonoBehaviour
6 {
7 //Hierarchyからセット
8 [ SerializeField ] Renderer Renderer ;
9 [ SerializeField ] GameObject Effect ;
10
11 //死んだ後、復活するまでの時間
12 public static readonly float RE_SPAWN_INTERVAL = 3 ;
13 //フェードのスピード
14 public static readonly float FADE_SPEED = 1.2f ;
15
16 bool IsFadeOut ;
17 Color DefaultColor ;
18 Vector3 DefaultPos ;
19
20 void Awake ( )
21 {
22 DefaultColor = Renderer . material . color ;
23 DefaultPos = gameObject . transform . position ;
24 }
25
26 public void Show ( )
27 {
28 gameObject . transform . position = DefaultPos ;
29 Renderer . material . color = DefaultColor ;
30
31 Renderer . gameObject . SetActive ( true ) ;
32 Effect . SetActive ( false ) ;
33 }
34
35 public void Hide ( )
36 {
37 IsFadeOut = true ;
38 Effect . SetActive ( true ) ;
39 }
40
41 void OnCollisionEnter ( Collision other )
42 {
43 if ( ! IsFadeOut && other . gameObject . CompareTag ( "Player" ) ) Hide ( ) ;
44 }
45
46 void Update ( )
47 {
48 if ( IsFadeOut )
49 {
50 var currentColor = Renderer . material . color ;
51 currentColor . a -= FADE_SPEED * Time . deltaTime ;
52 Renderer . material . SetColor ( "_Color" , currentColor ) ;
53
54 if ( currentColor . a <= 0 )
55 {
56 IsFadeOut = false ;
57 Renderer . gameObject . SetActive ( false ) ;
58 Effect . SetActive ( false ) ;
59 StartCoroutine ( ReSpown ( ) ) ;
60 }
61 }
62 }
63
64 IEnumerator ReSpown ( )
65 {
66 yield return new WaitForSeconds ( RE_SPAWN_INTERVAL ) ;
67 Show ( ) ;
68 }
69 }
70
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。