Unityを使った3Dゲームの作り方(かめくめ)Unityを使った3Dゲームの作り方(かめくめ)ゲーム開発エンジンUnityを使った3Dゲームの制作に参考になる情報を公開しています。0Unityでオフラインでの協力プレイや対戦プレイを出来るようにするにはUnityでオフラインの対戦プレイや協力プレイを実現する方法Unityでオフラインの対戦プレイや協力プレイをする為の機能を作成していきます。コントローラーを複数繋いでそれぞれのコントローラーでそれぞれのキャラクターを動かせるようにします。20:35の記事でやり方を記載しました。今回の記事では↑の記事のようにプレイヤー毎にキャラクターを操作出来るようになっている必要があります。カメラが動かず1画面でプレイヤー全てを見る事が出来ればゲームとして問題はありませんが、キャラクターが広い世界を動き回りプレイヤー毎に専用のカメラがある場合はそれぞれの動かすキャラクターが見えないと困ります。そこで今回はプレイヤー毎のカメラを作成し2プレイヤーなら画面を2つに分割し、それぞれのキャラクターを写すようにしたいと思います。今回はカメラを2プレイヤー用の縦・横の分割、4プレイヤー用の4分割が出来るようにしていきます。プレイヤー数分のカメラ分割が出来ますが大型ディスプレイとかでないと全然見えなくなるかもしれません・・・・。キャラクターを4プレイヤー作成するのは設定が大変なのでキャラクターは2プレイヤーだけ作り、4プレイヤー分のカメラを作成します。Targetスクリプトを取りつけます。Targetを選択します。Targetにはカメラが追っていくキャラクターをドラッグ&ドロップし設定します。Offsetはカメラの位置調整ですね。カメラが出来たら名前をPlayer1Cameraとします。カメラを選択している状態でCtrl+Dでコピーし名前をPlayer2Camera、Player3Camera、Player4Cameraとします。Componentを選択し削除します。TargetのTargetにはPlayer2を設定します。今回のサンプルでは2プレイヤーしかいないので2~4のカメラはPlayer2を追いかけることにします。カメラがそれぞれ分かれていると見づらいので、空のゲームオブジェクトを作成し名前をCameraとしその子要素にカメラをまとめてしまいます。Listenerだけ残し、後は削除しておきます。これでカメラの作成が終了しました。カメラ分割スクリプトカメラの作成が終了したので次はカメラの分割をするスクリプトを作成します。実際には分割しているわけではなくウインドウ内のどこからどこまでがカメラ1の描画範囲、どこからどこまでがカメラ2の描画範囲と設定を変えるだけです。今回はタイトルシーンとゲームシーンを分けて作りません。本来であればシーン移動時にゲームの設定等を引き継ぎその設定にしたがってカメラの分割を行う必要があります。今回は空のゲームオブジェクトを作成し名前をCameraScriptとし、それに新しくSplitCameraSettingスクリプトを作成し取りつけます。SplitCameraSettingスクリプトのインスペクタでカメラの分割設定を出来るようにし確認する事にします。0.5f);}}}インスペクタで4プレイヤー用のカメラを設定出来るようにし、カメラの分割モードによってカメラのViewPortRectを変更します。Rectは第1引数がXの位置、第2引数がYの位置、第3引数が幅、第4引数が高さとなります。Xの0はウインドウの左、Yの0はウインドウの下、Xの1はウインドウの右、Yの1はウインドウの上をあらわしています。4プレイヤーモードの場合はPlayer1が左上、Player2が右上、Player3が左下、Player4のカメラが右下に表示されるようになります。SplitCameraSettingのインスペクタでmodeをsquareにしてUnityを実行すると↑のようにプレイヤー毎のカメラが4分割されて表示されました。カメラの枠を付けるカメラの分割は出来ましたがカメラの仕切りがないので少し見づらい部分があります。そこでカメラに枠を付けそれぞれのカメラをわかりやすくしたいと思います。カメラ枠用の画像を作成します。Windowsのペイントで作成した10×10サイズの画像です。枠画像を作るのが面倒な方は↑の画像を右クリック→名前を付けて保存でローカルに保存してご自由に使ってください。Asset...でさきほど作成した画像を選択します。次にヒエラルキー上で右クリック→UI→Canvasを選択し名前をPlayer1Wakuとします。CameraにはPlayer1Cameraを設定します。することでこのCanvasはPlayer1Cameraの枠に合わせて表示されるようになります。次にPlayer1Wakuの子要素に右クリック→UI→Imageを4つ作成し名前をLeft、Right、Top、Bottomという名前に変更します。それぞれが枠の部品になります。一つの大きい枠を作成し設定する事も出来ますがウインドウサイズによって画像が引き延ばされるので個別に作ることにしました。一つの枠でも出来るような気がしますが・・・とりあえず今回はパスで・・・・(;一_一)Imageには先ほど取り込んだ10×10の画像を設定します。枠それぞれでAnchorsの位置を設定し、幅や高さを変更します。LeftはRightはTopはBottomはのように設定します。Left、RightはWidth、Top、BottomはHeightのサイズを変更します。これでPlayer1Wakuが出来たのでCtrl+DでコピーしPlayer2Waku~Player4Wakuを作ります。Cameraはそれぞれのカメラを設定するようにします。これで枠の設定が終わりました。接している部分の枠の幅を変更するこのままでも枠が表示されますが、カメラそれぞれが接している部分は枠が重なるので太さが2倍になります。接している部分を強調する場合はこのままでいいですが、枠の幅を同じにしたい場合は調整が必要になります。そこでSplitCameraSettingスクリプトに枠の幅を変更する処理を追加します。waku4Rect.localScale.z);}}}RectTransformのWidthやHeightを直接変更する事が出来なかったのでScaleを変更するようにしました。枠の子要素から名前で検索し、そのカメラの枠が接している部分のScaleを半分にしています。SplitCameraSettingの設定は↑のように設定します。これで全ての機能が完成しました。カメラ分割機能を確認するカメラ分割機能と枠の表示機能が完成したのでゲームパッドを2つ繋いで機能を確認してみます。↑のようになりました。これで協力プレイ時も他のユーザーがどこにいるかわかるので便利ですね。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。サイト内検索が出来ますプロフィール管理人のかめくめちゃんです。(-_-)メールはこちらにお願いします(記事への質問はコメント欄にお願いいたします)。kamekumechan@gmail.comいずれはSIRENやバイオハザードみたいなアクションゲームを作りたいと思っています。ゲームシナリオが書けないので面白いゲームはなかなか作れません・・・・。(^_^;)名前の由来はカメが好きだからです。Д`)シクシク...お知らせ2020/01/18個人的にUnity2019.2.18f1をインストールしました。2020/01/01あけましておめでとうございます。(^^)/ユニティちゃんのRPGを作ってみようのPartyStatusスクリプトでpartyMembersのListの型がCharacterStatusとなっていたのでAllyStatusに変更しました。変更したというか、元々AllyStatusに書き換える前のスクリプトを掲載していたので修正しました。ユニティちゃんのRPGを作ってみよう10ーコマンド画面の作成とステータスの表示ーユニティちゃんのRPGでコマンド画面の作成とステータスコマンドを作成し、選択したキャラクターのステータスを表示するようにしていきます。20:00GetPartyStatusメソッドの戻り値もそれに伴って変更しています。2018/08/07コメント欄へのわたくしの返信は停止しております。わたくしに出来る事は既に記事にしてあるので、ブログ右上の検索窓を活用してください。(._.)またブログの最初の方の機能を積み上げていく記事に関しての疑問点は当ブログ記事のスクリプトの説明と寄せられた質問への回答Unityを使った3Dゲームの作り方(かめくめ)の機能積み上げ形式の記事のスクリプトの説明と寄せられた記事の機能についての質問への回答を掲載しています。21:41も参照してみてください。コメントの返信はありませんが、回答は記事に反映されている可能性があります。当ブログはハイスピードプランです。WordPressの編集画面の動作が早くなった。Unityを使った3Dゲームの作り方(かめくめ).。