Unityに関連する記事です

Updateメソッドを使用する方法(未)

void Update() {
    //クリックされたら
    if (Input.GetMouseButtonDown(0)) {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        // オブジェクトを取得
        RaycastHit2D hit2d = Physics2D.Raycast((Vector2)ray.origin, (Vector2)ray.direction);

        //何かしら取得でき、それが自分自身だったら
        if(hit2d && hit2d.transform.gameObject == this.gameObject) {
            // 処理を実装    
        }
    }
}

OnTriggerStay2Dメソッドを使用する方法


void OnTriggerStay2D(Collider2D col) {
        
    // クリック時イベント
    if (Input.GetMouseButtonUp(0)) {
        // このゲームオブジェクトがタッチされたらRayを発射
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit2D hit2d = Physics2D.Raycast((Vector2)ray.origin, (Vector2)ray.direction);
        if (hit2d && hit2d.collider.gameObject == this.gameObject) {
            // Debug.Log("検知!");
            // SetActiveをOFFに
            this.gameObject.SetActive(false);
        }
    }
}

応用

ClickManagerを作成して、画面内のゲームオブジェクトへのタップ情報を管理する

 複数のゲームオブジェクトにそれぞれタップによる当たり判定を用意するは大変な作業です。
そこで管理用のクラスを1つ作成し、これがゲーム内におけるタップを判定し、指定したゲームオブジェクトに対して命令を出すような仕組みに変更をします。

 利点としては、Raycastによる判定処理を1つのクラス内にまとめることにより、複数のクラスに同じ処理を何回も書く手間と無駄が省けることです。

タップされるゲームオブジェクトには共通の親クラスをアタッチすることで、メソッドの呼び出しに自動的に多態性を持たせる

 またゲームオブジェクトには共通のクラス(親クラス分)をアタッチしておくことにより、親クラスを指定することで自動的に子クラスのメソッドへ分岐を作成できます。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu



プログラムの基礎学習

コード練習

技術/知識(実装例)

2Dおはじきゲーム(発展編)

2D強制横スクロールアクション(発展編)

3Dダイビングアクション(発展編)

2Dタップシューティング(拡張編)

レースゲーム(抜粋)

2D放置ゲーム(発展編)

3D脱出ゲーム(抜粋)

2Dリアルタイムストラテジー

2Dトップビューアドベンチャー(宴アセット使用)

3Dタップアクション(NavMeshAgent 使用)

2Dトップビューアクション(カエルの為に〜、ボコスカウォーズ風)

3Dトップビューアクション(白猫風)

VideoPlayer イベント連動の実装例

VideoPlayer リスト内からムービー再生の実装例(発展)

AR 画像付きオブジェクト生成の実装例

AR リスト内から生成の実装例(発展)

private



このサイト内の作品はユニティちゃんライセンス条項の元に提供されています。

管理人/副管理人のみ編集できます