ブルーノのC#プログラミング & unity勉強日記

プログラミング素人、ブルーノの自主勉強ノートです。他のプログラミングを勉強したい方の助けになれば幸いです。その他趣味の雑記もしていきたいです

No.002 進捗状況08

f:id:covory10101101276:20190220112119j:plain
Lion Sands hotel -南アフリカ-

みなさんこんにちは🌚

キングダムハーツ3やApex Legendsに最近はまっていてPS4の家庭内勢力がSwitchを上回ってきているブルーノです。PSの圧倒的なグラフィックは定期的にみたくなりますね。

では今回もオブジェクトを制作していきます。

移動するチェックポイント
今回はキャラが触れた時に消えるようないわゆるチェックポイントを作りたいと思います。イメージとしてはゼルダの伝説ブレスオブザワイルドの光の輪くぐりの感じです

f:id:covory10101101276:20190220112702j:plain
こんな感じ
まず簡単に見た目だけ作ります。
f:id:covory10101101276:20190220113052p:plain
空のオブジェクト置いて
f:id:covory10101101276:20190220113120p:plain
子にキューブ5個置いて
f:id:covory10101101276:20190220113147p:plain
いい感じに配置
この中をくぐることにします。
そして今置いたオブジェクトたちにはデフォルトでコライダーがついていますが彼らにぶつかる必要はあまりないので取り除き、逆に空のオブジェクトに適当なコライダーを通過した判定のため追加しておきます。
f:id:covory10101101276:20190220113917p:plain
空のオブジェクトはCheckPointにし、コライダーをつけました
f:id:covory10101101276:20190220114107p:plainf:id:covory10101101276:20190220114121p:plain
大きさを変更し、Is Triggerにチェックをつけます。これで物理的な干渉をせずに当たり判定を行うことができます。
今回実装する感じとしては

  • ただ触れた瞬間に消える。
  • 座標を格納する変数を任意の数指定し、触れたら次の座標に現れる

という二つの方法を考えつきました。
後者はまんまゼルダのイメージですね。実装が簡単なのは間違いなく前者ですが、今回は両方作りたいと思います。
触れた瞬間に消える
これは簡単ですね。コライダーが当たりを感知したらDestroyするようにすればOKです。が、いきなりパッと消えると変なのでアニメーションでとても小さくしてから消します。
dreameaters5239.hatenablog.com
アニメーションの参考過去記事

f:id:covory10101101276:20190305042851p:plain
アニメーションを作成
f:id:covory10101101276:20190305043050p:plain
CheckPointAnimationの中身
わかりにくいですが、0.3秒でちょっと大きくなり、0.5秒までで小さくなって消えるアニメーションです。
f:id:covory10101101276:20190305043243p:plain
CheckPointScriptの中身
こんな風にスクリプトを書いてみました。ついているAnimatorの取得とコライダー反応時にアニメーションを再生する動きのみとりあえず記述です。再生してみると
f:id:covory10101101276:20190305044107p:plain
一応できたのですが、アニメーションがループ再生してしまいました。
f:id:covory10101101276:20190305044345p:plain
アニメーションファイルのLoop timeに
チェックがついているのが原因でした
これでアニメーションの方はOKですが、まだオブジェクトを消す事と触れたことを知らせるフラグを実装することが残っています。というわけでスクリプトを改良します。
アニメーション後にオブジェクトを消す
簡単そうに思えましたが意外にネットに方法がなかったので、アニメーションウィンドウにあったこれを利用してみました。
f:id:covory10101101276:20190305214635p:plain
アニメーション内でスクリプトのアクティブ化・非アクティブ化を操作できるみたいです。これでオブジェクトを消す下のスクリプトを有効化します。
f:id:covory10101101276:20190305214646p:plain
中身はこれだけ
フラグについて
ゲームにおいてフラグというのは欠かせない存在ですよね。しかしこのフラグ、どういう風に実装するのがゲーム作りにおいて主流なのでしょうかね。独学なのでいまだによくわかりません。今回はこのCheckPointScriptの中でbool値を操作し、ゲームシステムのスクリプトでそれを検出するという風にしようと思います。
f:id:covory10101101276:20190305215923p:plain
Checkedというbool値を追加しました
これで検出できるはずです。記事が長くなるので今回はここまでにして次回移動する機能の実装を作りたいと思います。

キングダムハーツ3のシークレットムービー、気になる内容ばかりでしたねえ〜〜😄結局黒い箱とマスターオブマスターは出てきませんでしたが、次回で深く関わってきそうですよね。Verum Rexの存在も新しく今後に関わってくるような描写もあってせっかくゼアノートを倒したのにもう世界観が広がりまくりでソラたちの冒険は終わらなそうです。まだまだキンハーは楽しめるコンテンツとして続きそうで楽しみです😍