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
いなも@システマライフハッカー
某有名健康食品メーカーに勤めながら、ロシアの武術”システマ”の訓練に精通。その後、システマの概念とスキルを軸に生きること、その普及活動に投身することを決意。 ”システマ”の概念より、過酷な現代社会を、スマートかつ快適に暮らせるようなノウハウを、ブログを通じて忖度なしで発信中~! 問い合わせはTwitterのDMで!(https://twitter.com/inamo002)

COMMENT

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

CAPTCHA