UnityのLineRendererで描いた線に当たり判定(コライダー)をつける
以前LineRendererを使ってお絵かきをする記事を書きました。
今回はその応用編のような内容です。
描いた線に当たり判定のコライダーをつけみたいと思います。
コライダーをつける事によってこの様なゲームに使えるようになります。
【線を引いてゴールまで導くゲーム】
【ブロック崩し&インベーダー風ゲーム】
他にもカジュアルゲーム等に使えそうなテクニックかなと個人的に思ってます。
今回はシンプルに落ちてくる玉を描いた線で受け止めるというものを作ってみたいと思います。
必要となるオブジェクトを準備する
では早速やっていきましょう。
Unityの新規2Dプロジェクトを作成します。
今回は縦長の画面にしたいのでGameシーンは1920×1080 Portaitのサイズにします。
次に落下するオブジェクトを作成します。
Hierarchy上からで 2D Object > Sprites > Circle を選択し丸を作ります。
Ballという名前にして位置は少し上の方にしました。
続いてBallに必要なコンポーネントを追加していきます。
Circle Collider 2DとRigidbody 2Dです。
次に線を描くためのスクリプトをアタッチする空のゲームオブジェクトを作成します。
Hierarchy上からCreate Emptyを選択し、名前はStrokeとします。
線を描く処理
線を描く処理の基本設定
つづいてStrokeにアタッチするスクリプトを作っていきます。
StrokeControllerというC#スクリプトを作成し、Strokeにアタッチします。
基本的には以前作成したお絵かきの記事と同じです。
上記の内容をベースに変更箇所を確認しつつプログラムを書いていきます。
必要な変数を宣言します。
続いてStart関数内でlinePointsの初期化、Update関数内で入力処理、そして必要な関数を予め作っておきます。
以上で準備が整いました。
lineObjの生成
続いて左クリックされた時にLineとなるゲームオブジェクトを作成する処理を作ります。
_addLineObject関数の中身を作っていきましょう。
行うことは以下の通りです。
- ゲームオブジェクト作成
- 名前の変更
- 必要なコンポーネントを追加
- Stroke自身の子要素に設定
この状態でLineというゲームオブジェクトが正常に生成されるか確認します。
HierarchyでStrokeの子要素にLineが生成されているのが確認できました。
LineのInspectorも確認します。
必要なLineRenderer、EdgeCollider2Dが追加されています。
現時点ではlineObjの位置はStrokeの位置になっていますので後ほどこちらは修正していきます。
lineRnendererの設定
続いてlineRendererの初期設定を_initRenderer関数内で行います。
行うことは以下の通りです。
- lineObjのLineRendererを取得
- ポジションカウントをリセット
- マテリアルの設定
- マテリアルの色を設定
- 始点、終点の太さを設定
この様な感じになりました。
LineRnendereとEdgeCollider2Dの更新
ではlineObjの位置を_addPositionDataToLineRenderer関数内で設定していきます。
この関数内では下記のことを行います。
- マウス座標の取得
- ワールド座標へ変換
- lineRendererの更新処理
- EdgeCollider2Dの更新処理
このようになりました。
注意点としてEdgeCollider2DのSetPointsはlineRnedererのように個別の座標を追加していくのではなくVector2のリストを引数として渡してあげる必要があるそうです。
なのでlinePointsというVector2型のリストを用意し、線が引かれていくタイミングでその座標を追加しています。
参考までにUnity公式リンクを載せておきます
Inspectorの設定と確認
それでは最後にStrokeのInspectorから諸々設定していきます。
私はこのように設定してみました。
LineMaterialにはSprites-Defaultのマテリアルをアタッチしています。
色は白にし、線の太さは0.13にしました。
無事引いた線が落ちてくるボールをちゃんと受け止めてくれました。
StrokeControllerの全体の処理も載せておきます。
Unityの学習方法
Unity初心者の方にオススメの学習方法をいくつか紹介します。
Unity本【kindle unlimited】
私も利用しているAmazonが提供する電子書籍読み放題のサービスです。
月額980円で約200万冊以上が読み放題でとてもお得です。
また30日無料体験もできるのが魅力です。当然Unityに関する書籍もたくさん揃っています。
またC#関連の書籍や、プログラミングのものも多数あります。
プログラミング関連の書籍は値段が結構しますので、それらが無料で読めるのはかなりお得なサービスです。
30日無料体験もありますので気に入らなければその期間に解約すれば料金は発生しません。
通常のUnity本
kindle unlimitedは全部のUnity関連書籍が読めるわけではありません。
通常に購入しなければ読めない本もありますので、その中から私が参考になった書籍を紹介します。
Udemy
Udemyの動画講座にもUnity関連のオススメの動画がたくさんあります。
その中でも私が特に気に入っている動画を紹介します。
どの動画も初心者でも完成することが出来るように丁寧に解説しています。
オンラインで学習
質問が出来るおすすめのUnity学習方法ページです。
・Unityでゲーム作りたいけど何から初めたら良いかわからない。
・独学でゲームを完成させられるか不安。
・ゲーム開発でわからないことを一人で解消できない。
・入門書を一通りやってみたが次に何していいかわからない。
こんな人におすすめしたい内容になっています。
関連記事

UnityでGoogleスプレッドシートの読み込みと書き込みを行う
今回はUnityとGoogleのスプレッドシートを連携させて、スプレッドシートの内容を表示させたり、Unity側からスプレッドシートに情報を追記して行く方法を作ってみたいと思います。 ちなみにこの仕組みを実装する経緯は業 […]

ゲーム素材を作成するときに使えるAIイラストツール
個人開発でゲームを作っていると素材をどうするか苦労しませんか?
私は絵心が無いのでいつもキャラクター等の画像で頭を悩ませます。
そんなときに使えるのがAIがイラストを作ってくれるツールです。

自作ゲームのプレスリリースを受け付けてくれるサイト
個人制作のゲームでもプレスリリースを受け付けてくれるサイトを紹介してみようと思います。
必ず掲載してくれるというわけではありませんが、参考にしていただければと思います。

ドラクエ風 簡単な名前入力システムを作る
ドラクエをはじめ、名前などを入力するシステムを作っていきます。
非常にシンプルな作りになっています。

【初心者向け】ButtonのOnClickをC#スクリプトで登録する
ButtonのクリックイベントをInspectorではなくC#スクリプトから登録する方法です。
初心者の方でも簡単に出来る内容です。

URP 2Dで複数のカメラを使って描画する
UnityのURP2Dで複数のカメラを使ってゲーム画面に表示させる方法を紹介したいと思います。
ミニマップなどを表示したいときに便利です。

ウィザードリィのような疑似3Dダンジョンを作る
ウィザードリィのような疑似3DダンジョンをUnity2Dで作成してみたいと思います。

穴掘り法で2D迷路を作る
穴掘り法を使って2Dマップを作成してみます。
プレイヤーの移動まで実装しています。

見下ろし2Dマップ上でプレイヤーを動かす
プレイヤーを2Dマップ上で移動させてみます。
見下ろし型のRPGとかでありそうなやつです。
最後までご覧頂いてありがとうございました。