0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Unity玉転がしチュートリアル 3-2.Pick Up オブジェクトの収集

Posted at

この記事の対象者

  • Unity入門したい人
  • 最初の一歩が踏み出せない人

OSとか環境とか

  • Windows 10 Pro
  • macOS Mojave
  • Unity 2019.2.8f1
  • Rider 2019.2.2

補足

  • 公式動画にて利用しているのはMacなので、Windowsユーザーはある程度脳内変換して見る事
  • 筆者はWindows、Macの両方の環境で確認。Ubuntuとかでは検証してない。
  • 基本Unityは英語メニューで利用
  • 間違いがあったらツッコミ大歓迎

公式

アイテムの取得

アイテムとプレイヤーが衝突したとき取得する処理を行う

長らく非表示だったプレイヤーオブジェクトを可視化する

PlayerController.csを開き、OnTriggerEnterメソッドで衝突判定を実装する

タグの設定

オブジェクトにTag名をつけて判別する為、準備を行う

image.png

現在は「Untagged」になっているので、タグを追加して付与する
Add Tag より「Pick Up」タグを追加する

image.png

これでプロジェクトに新たにタグが作成されたので、Pick UpのPrefabに対してタグを設定する

image.png

Prefabを利用しているので、ゲーム内の12個のPick Upオブジェクトにも同様のタグが付与される

Colliderに対してトリガーを設定し、衝突検出をOnTriggerEnterメソッドで検出出来るようにする
※何故トリガーを設定する必要があるかは公式動画の9:51~11:51ぐらいまでを見る必要あり

image.png

PlayerController.csに衝突判定用のコードを追加する

PlayerController.cs
private void OnTriggerEnter(Collider other)
{
    if (other.gameObject.CompareTag("Pick Up"))
    {
        other.gameObject.SetActive(false);            
    }
}

このままプレイした際に、しっかりプレイヤーとアイテムが衝突した際にアイテムが非表示になる

しかし、問題点がありUnityは特性上静的Colliderについて領域情報のキャッシュを保持している
本来ならば、静的なのでキャッシュ情報は再計算等が必要なくなるのでとても良いが今回はアイテムが回転するので
毎回キャッシュするのは非常に無駄

ColliderとRigidbodyの両方があるゲームオブジェクトは全て動的と見なされるのでRigidbodyを追加
追加すると動的Colliderとして認識されるが、重力を感じるようになるので床をすり抜けてしまう

その為にIs Kinematicにチェックを付けてオブジェクトを物理演算の影響を受けない様にする

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?