【Unity初心者 ゲーム開発メモ】RaycastHit2DでGameObjectを確認し、gameObject.nameで使用する

皆さんお疲れ様です。

仮面男です。

皆さんいかがお過ごしでしょうか?

外出自粛明けてまたすぐに都内では緊急アラートが発令してしまいましたね。。。

外出自粛は正直ストレス溜まるかと思いますが、こんなときこそ家でしかできないことを継続し続けて、
新しい趣味や、好きなことを磨く時間に使っていきましょう!

そんなボクは漫画とかアニメがすごく好きなので、ここ最近も家では漫画をずっと読んでいます!

最近読んだ作品でまた面白いものを見つけたので載せておきますね!

※以下いつものように雑談なので、飛ばしたい人は本記事までスクロールしちゃってください(;^_^A

仮面男の今回のおすすめ漫画!!

今回紹介するのはこれです!

『クニミツの政』

この漫画は週刊少年マガジンで連載していてドラマ化もされた作品でして、腐った政治をぶっ壊して日本を変えるために政治家を目指す少年の物語なんですけど、予想以上に面白かったです。

最近、黒川元検事長の汚職や桜の会の問題などコロナ以外でも政界がざわついておりましたが、この作品もそういった一般の目には届かないような部分を結構わかりやすく、また面白く描いている作品のため、ぜひ時間に余裕のある方は読んでみてください!

2020年6月6日時点ではKindle Unlimitedで無料で読めるみたいです!

では、雑談はこの辺にして、早速本日のメモを書いていきます!

RaycastHitの概要

RaycastHitは簡単に言うとオブジェクトにHitしたら、そのオブジェクトの情報を返すセンサーのようなものです。

以下わかりやすく動画をつけます。※わかりやすく3Dでお見せしますが、メモのスクリプトは2Dに対してのスクリプトです。

動画内の白い球体の部分がRaycastHitで出している光線になります。
これは、プログラムで見えるようにしているのですが、実際には見えません。

動画内ではこの白い球体が地面に触れることで接地判定がtrueになり接地中はPlayerを移動させることができます。
※接地していないときにPlayerが動いたら空中散歩してワンピースの月歩状態ですからねw

RaycastHitで取得した情報

RaycastHitで取得したゲームオブジェクトの中身を見るとオブジェクトの名称が出力されます。

以下スクリプト

上記でRaycastHitでHitしたオブジェクト(上記スクリプトではクリックしたオブジェクト)がusagiiconと出力されているにも関わらず
if (clickObjectString == “usagiicon”)ではfalseになります。

実をいうと上のスクリプトではGameObjectの情報としてusagiiconが表示されるけれど、このまま条件式を記載しても一向にtrueになりません。

そのため、以下のようにしてみました。

最初のスクリプトではResultTrueScene関数内をstring clickObjectString = clickObject.ToString();と記述していたのですが、
string clickObjectString = clickObject.name.ToString();とすることで、ゲームオブジェクトの名前としてのusagiiconを取得でき、
条件式が思ったように実行され、Debug.Log(clickObjectString);がコンソールに出力されます。

今回のまとめ

ゲームオブジェクトの情報をRaycastHitで取得して変数に格納して、その変数をDebug.Logで出力するとゲームオブジェクトの名前がコンソールに出力されるため、
騙されてしまいましたが、当たり前のことですが、gameObject.nameで定義しないと、gameObject内の『名前』にアクセスすることはできないんですよね。

おそらく初心者の方で同じようなミスに当たる人もいると思ったのでメモに残しておきました。
※というのは建前で本音言うと、自分が同じ間違いを100%やらかすと思ったので備忘として残しました。。。

また、いろいろと失敗したこと、気が付いたことなどメモしていきますのでよかったら参考にしてください!

ではまた!