Unity

【Unity】当たり判定で3Dオブジェクトをフェイドアウトさせる方法【当たり判定OnTriggerとboolを学ぶ】

本記事内には、アフィリエイトリンクを含む場合があります

本記事は、3Dオブジェクトのフェードイン・フェードアウトをさせるスクリプトの実践編です。

3Dオブジェクトのフェードイン・フェードアウト(方法)↓

【Unity】メッシュモデルや3Dオブジェクトをフェードイン・フェードアウトさせる方法【スクリプトで徐々に消す】Unityを使ってゲームや映像を作っていると、 3Dオブジェクトに、徐々に消えるエフェクトをつけたいと思ったことはないですか? ...

前回は、フェードイン・フェードアウトを、2つのbool(trueまたはfalse)を設け、それをInspector上でクリックすることで、制御しました。

しかし、実際のゲームでは、Inspectorをいじることはできません。

なので、ゲーム内のアクションで、これらのboolを変えられるようにすれば、

フェードイン・フェードアウトを起こすことができるようになります。

 

やり方は無限にあると思いますが、

アイテムを取るとそれがフェードアウトすることを想定して、

オブジェクトに”Player”が衝突して消える(フェードアウトする)ようにしたいと思います。

完成イメージ↓

1.Sphereとプレイヤーを配置

Sphereは前回と同じ状態です。

そこにプレイヤーを配置します。

本ブログマスコットキャラクターの”システマン”を置いてますが、中身はunity-chanです。

unity-chanのプレハブは配置するだけで、動くようになるのでとても便利ですね!

オリジナルキャラクターをunity-chanのように動かす方法は、こちら↓

なお、プレイヤーオブジェクトのTagはPlayerにしておきます(後に活躍する)。

この段階では、Sphereはただの球体で、乗れます。

Inspectorのbool(IsFadeOutやIsFadeIn)にチェックで、描画のみを制御できます。

2.Sphereのスクリプトに追記する

Sphereにアタッチされている、SphereFader.csに追記を行います。

追記したのは、 void OnTriggerEnter(Collider other) のメソッド部分だけです^^;

このオブジェクトが当たり判定を受けたとき、
プレイヤータグの当たったオブジェクトがPlayerタグのものだった場合に、
それぞれのboolのチェックが入るようにしました。

せっかくbool IsFadeInもあるので、
描画されていないときに当たれば、フェードインするようにしています。

 

また、衝突判定をもつようにするために、
SphereオブジェクトのSphere ColliderのIs Triggerにチェックを入れます。

その代わり、このオブジェクトはすり抜けられるようになります。

すり抜けさせたくない場合、別途Sphere Colliderをつければよいでしょう。

という具合で、フェードアウトであろうと、使い方は簡単ですね。

boolで状態をコントロールすると、連続的な当たり判定を避けることができます。

 

以上、ご参考まで^^

unity使いたいけれど、日本語で学習したい方へ↓

Unityのチュートリアルやエディターを日本語化する方法【英語に抵抗があっても大丈夫】Unityは、世界屈指のゲーム開発エンジンです。 ゲーム業界にとどまらず、XR技術によって、さまざまな事業を牽引する存在となるでし...
ABOUT ME
いなも@システマライフハッカー
”仙豆”を開発することを夢見て、健康食品会社で働いていたものの、2016年に出会ったロシアの武術”システマ”こそ、その糸口があると感銘し、勝手にシステマ普及活動を始める。 一方で、クリエイティブなモノ作りが好きで、DX社会で楽しみを見出せる"Unity”を活かして、”スマートかつ快適な暮らし”のヒントを発信している。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA