Unityに関連する記事です

発展3 ーAR カメラのプレイヤー追従処理の実装ー

 5.AR Camera にプレイヤーを追尾する機能を実装する



 新しい学習内容は、以下の通りです。

 ・AR Camera の設定



5.AR Camera にプレイヤーを追尾する機能を実装する

1.設計


 AR シーンにおいてのゲーム画面は、AR Camera コンポーネントにアタッチされている Camera コンポーネントが映している画面になります。

 ゲーム開始に合わせてキャラは斜面を滑り始めますが、カメラの位置は変更されません。
そのため、ゲーム画面がキャラの移動に合わせて自動的に変更されることはありません。

 今回は、すでに作成済の CameraController スクリプトを修正して、AR Camera がプレイヤーを追従するように設計を修正します。



 追従処理の実装方法は同じです。

 ゲームが始まる際のお互いの位置を元に、どの位の距離離れているかを補正値として用意します。
これはいわば、キャラとカメラの差分値です。そのため、キャラが滑ることによって下方向へ移動する場合、この差分値分の距離だけ離れて追従するようにすれば、
カメラも一緒に下方向に移動しつつ、ゲーム開始時からの距離を保ったままキャラを追従するように制御を行うことが出来ます


<実装動画 Sceneビューも見ると、常に一定の距離を保ってカメラがキャラを追従している>
https://gyazo.com/1ecfc319333bff38ea624cf197334e7c

 
 まずは最初に、カメラの位置を設定します。この位置とキャラの位置とが補正値となりますので重要な情報です。


2.AR Session Origin ゲームオブジェクトの位置を調整する


 カメラ用のゲームオブジェクトの位置を調整して、Penguin ゲームオブジェクトを映す位置に移動させます。
ただし、AR Camera ゲームオブジェクトは AR Session Origin ゲームオブジェクトの子オブジェクトになっていますので、
今回は AR Camera ゲームオブジェクトの位置ではなく、AR Session Origin ゲームオブジェクトの位置を調整してカメラの位置として設定します。

 Sceneビューでゲームオブジェクトの位置を操作しながら、Game ビュー、あるいは Scene ビューに表示される Camera ビューを見ながら操作を行います。
インスペクター画像の Position や Rotation の位置を参考にしてください。

 回転角度は X 軸だけ 15 前後にすると、斜面のゲームオブジェクトと同じ角度がついて見やすくなります。


AR Session Origin ゲームオブジェクト インスペクター画像



Sceneビュー



Sceneビュー



Sceneビュー



Gameビュー



3.CameraController スクリプトを修正する


 AR Camera ゲームオブジェクトにアタッチしても利用できるように修正を行います。
合わせて、今後、AR シーンにおいてステージを後から生成する処理に変更しても対応できるように、処理をメソッド化したり、新しいメソッドを追加しています。

 Start メソッド内と Update メソッド内も修正を行っていますので、処理の内容を理解しながら修正を行ってください
ただ書き写しているだけでは学習になりません。常に考えるようにしてみてください。


CameraController.cs

 <= クリックすると開きます。



4.AR Session Origin ゲームオブジェクトに Camera Controller スクリプトをアタッチし、設定を行う


 Scripts フォルダにある Camera Controller スクリプトをドラッグして、ヒエラルキーにある AR Session Origin ゲームオブジェクトの上でドロップします。
AR Session Origin ゲームオブジェクトをインスペクターで確認して、アタッチされているかを確認してください。
もしもアタッチ出来ていなければもう一度、ドラッグアンドドロップしてアタッチしてください。

 インスペクターにアサイン情報が表示されていますので、順番にアサインを行います。

 PlayerObjs 変数には、ヒエラルキーにある Stage ゲームオブジェクト内にある penguin ゲームオブジェクトをドラッグアンドドロップしてアサインします。

 CameraPos 変数には、ヒエラルキーにある AR Session Origin ゲームオブジェクトをドラッグアンドドロップしてアサインします。


AR Session Origin ゲームオブジェクト インスペクター画像



 以上で設定は完了です。


5.MainCamera ゲームオブジェクトの設定を行う


 CameraController スクリプトに変数を追加しているので、同じく CameraController スクリプトがアタッチされている
MainCamera ゲームオブジェクトのインスペクターにも変数が追加されていますので、そちらにアサインを行います。

 CameraPos 変数には、ヒエラルキーにある MainCamera ゲームオブジェクトをドラッグアンドドロップしてアサインします。


MainCamera ゲームオブジェクト インスペクター画像


 以上で設定は完了です。


6.ゲームを実行して動作を確認する


 エディターにてゲームを実行し、いままでと同じように MainCamera がプレイヤーを追従していることを確認してください。

 問題がなければ、ビルドを行い、実機にてゲームを実行して、AR において、AR カメラがプレイヤーを追従するようになっているかを確認します。
もしも AR Camera が追従しない場合には、CameraController スクリプトを見直すか、アサイン情報を間違えていないかを確認してください。



 以上でこの手順は終了です。

 => 次は 発展4 −スマホでのプレイヤーの制御機能の実装− です。

コメントをかく


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

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

Menu



プログラムの基礎学習

コード練習

技術/知識(実装例)

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

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

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

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

レースゲーム(抜粋)

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

3D脱出ゲーム(抜粋)

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

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

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

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

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

VideoPlayer イベント連動の実装例

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

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

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

private



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

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