【Unity】チュートリアルの「Roll a Ball」をやってみる話 #7
記事をご覧いただき、誠に有難うございます。
投稿主の無能です。
今回は、収集するアイテムをステージに追加したいと思います。
収集するアイテムをステージに追加する
ただPlayerが転がるだけではゲーム性が無いので、収集するアイテムを追加して、アイテムを全て集めたらステージクリア、と言う条件を付けたいと思います。
では収集するアイテムを作ります。
メニュー Game Object > 3D Object > Capsule でCapsule(カプセル)オブジェクトを作成し、名前を「CollectItem」にします。
Game Object > 3D Object > CapsuleでCapsuleを選択
名前を「CollectItem」にする
今回は緑色にしました。
MaterialをCollectItemという名前で作成
今回は緑色
MaterialをCollectItemにアタッチする
サイズの調整
まずはPositionをリセット(Positionをゼロ)にします。
Positionをリセットする
HierarchyビューのCollectItemのPositionを調整します。
HierarchyビューのCollectItemのPositionを調整
しかし、Playerに対してでかいですね…
サイズを小さくして、再度高さ(PositionのY)を調整します。
Scaleを0.3に、高さを0.5にしましたが、適宜調整してください。
Scaleを0.3に、高さを0.5にする(好みで調整する)
良い感じの大きさになった
大元のCollectItem(PrefabsフォルダにあるCollectItem)の方を見てみます。
最初にリセットした高さになっているので、こちらも0.5に修正します。
大元のCollectItemの方も高さを0.5に修正する
Tagを付ける
続けてTagを付けます。「CollectItem」というTagを追加して設定します。
「CollectItem」というTagを追加
Tagを設定する
ステージ内にCollectItemを配置する
配置する数は任意なので、自由に設置・配置してください。
今回は4つにして、配置は以下のようにします。
CollectItemの整理のため、「CollectItem」という名前の空のオブジェクトを追加して、その中に設置したCollectItemを入れます。
このように配置した
「CollectItem」という名前の空のオブジェクトを作成
設置したCollectItemを入れる
Gameビュー
理想としては、当たり判定はそのままですり抜けたいようにしたいです。
is Triggerにチェックを入れる
大元のCollectItemの方に行って、InspectorビューのCapsule Colliderを見てみます。
InspectorビューのCapsule Collider
「is Trigger」にチェックを入れます。
すり抜けるようになった
次は、このCollectItemが取得したように見えるスクリプトを書いていきます。
CollectItemスクリプトを書く
取得したように見えるという事は、PlayerがCollectItemに接触したら、Gameビューから消えれば取得したように見えますよね。
ではそのようにスクリプトを書きます。
CollectItemControllerと言う名前のスクリプトを新規作成します。
作ったスクリプトを大元のCollectItemにアタッチします。
CollectItemControllerスクリプトを新規作成
アタッチの仕方ですが、画面が切り替わってドラッグ&ドロップできませんので、違う方法でアタッチします。
大元のCollectItemのInspectorビューの下に「Add Component」ボタンがあります。
Inspectorビューの下に「Add Component」ボタンがある
文字の入力途中で出てきます。
検索スペースでスクリプトを検索
スクリプトがアタッチされた
当たり判定は前回やったOnCollisionEnter関数に近い関数で、OnTriggerEnter関数というものです。
Tagは今回、動かないCollectItemなので、逆に動いて当たってくるPlayerになります。
ですので、まだTagを付けていないPlayerにTagを設定する必要があります。
Unityに戻って、Playerに「Player」Tagを設定しましょう。
今回は「Player」Tagがあるので選択するだけです。
Playerに「Player」Tagを設定
今回はStart関数とUpdate関数は使わないので削除します。
OnTriggerEnter関数の中にif文を記述します。
このような記述になります。
private void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player")
{
}
}
このような感じになります。
if文内の処理は、Gameビューから消えるのでオブジェクトを破棄するDestroyを使います。
このような記述になります。
if (other.CompareTag("Player"))
{
// 自身を破棄する
Destroy(gameObject);
}
このようになります。
ではスクリプトを保存して、ゲームを実行してみましょう。
Gameビュー
今回はここまで。
まとめ
本記事では
- CollectItemを作成し設置した
- CollectItemControllerスクリプトを作成し、Playerと接触すると消えるようにした
という事を行いました。
次は、ステージのクリアを作りたいと思います。
本記事もご覧頂き、誠に有難うございます。
ではまた。



































コメント
コメントを投稿