投稿

【コルーチン】処理順を大事にしたい時、処理を待ちたい時に使うコルーチンについて

C#スクリプトで、 処理1 処理2 処理3 の順番に書いた場合、 もちろん処理1,2,3の順番で実行されるのですが、 処理1が終わった後に処理2が始まるわけではありません。 処理1が終わった後に処理2を始めたい場合、 コルーチンを使うと便利です。 これで処理1が終わったあと処理2を始められたり、 その間に〇〇秒待つ、などの処理もできます。 また、何かの入力をしたら次の処理が始まる、 などもゲームではよくありますが、これもコルーチンで対応できます。 これらのコルーチンの使い方は  スタジオしまづ様の解説動画 によくまとめられています。 以下もし時間があれば内容を書く。

Boss Roomいじり2:キャラクター選択→適当な待機室を作成

イメージ
Boss Roomいじり、その2です。 前回はメインメニューシーンをいじって2Dキャンバスを追加することに成功しました。 今回は、CharSelect(キャラクター選択)シーンをいじります。 私のゲームでは、このシーンではプレイヤーは自由に動けるようにして、 マップ上のお店などで各プレイヤーの準備を整えるシーンにしたいと思っています。 なので、まずは2Dのマップを作り、2Dのキャラクターが動けるようにしたいと思います。 【キャラクターやマップの素材のダウンロード】 スタジオしまづ様による解説動画 の通りにやりました。 ぴぽや倉庫様 から素材をダウンロードし、 Assets > GameData2D > Character にキャラ素材をダウンロードしました。 Assets > GameData2D > Map にマップ素材をダウンロードしました。(32×32) スライス等の処理は動画の通りで、 まず、ダウンロードした画像たちに Sprite Mode: Multiple Pizels Per Unit: 32(これは32*32の素材だから) Filter Mode: Point(no filter) とします。 そして画像をクリックした時のInspectorの真ん中上くらいのSprite Editorにて、 SliceのTypeをGrid By Cell Sizeにして、サイズを32&32にします。 そしてSliceボタン、Applyボタンとクリックすれば素材をきちんと分割できます。 これで一枚の絵に収まった素材をいくつかのパーツに分割できます。 マップも同様にスライスします。 【キャラクターを置く】 適当な画像、ここでは動画の通りサンタ女子の二枚目の画像(正面)をドラッグして ゲームオブジェクトとして置き、名前をplayerにします。 【キャラクターの移動】 参考: スタジオしまづ様の解説動画 Asset > Scripts > 2DScriptsMoguというフォルダを作りました。 元々ある他のフォルダと分けたかったからです。 その中に、PlayerController.csを作り、上記のplayerオブジェクトにアタッチします。 そしてその中身は namespace Unity . Multiplayer . Sa

Boss Roomいじり1:メインメニュー

イメージ
Boss Roomをいじっていて、 シーン管理が知らない形になっていました。 まずHierarchyタブにStartupシーンだけ読み込まれていて他のシーンは見えず、 Assets > Scenesの中にMainMenuやらCharSelectなどの他のシーンが 格納されていました。 ビルドするときのシーンの一番上はStartupシーンなので、 ゲーム開始時にはStartupシーンが読み込まれるはずですね。 それで、ゲームスタートするとStartupシーンではなく MainMenuシーンに移行していて「なんでStartupシーンじゃないの?」と思ったのですが、 Startupシーンの一番上(たぶん意識的に一番上に置いてくれている)に ApplicationControllerという重要そうなオブジェクトがあるので見てみると、 ApplicationController.csというスクリプトが貼られていました。中身の一部は こんな感じになっていて、確かにStart関数の中の最後に SceneManager.LoadScene("MainMenu"); とありますね。なので、本当にStartupシーンは読み込まれているんだけど、 一瞬でMainMenuシーンに移行しているわけですね。 ここから読み始めたら中身がわかりそうです。 と思って中を読んでみましたが、何一つわかりません。 どうやらここは触らず、このまま使えばいいのかもしれません。 ここで重要なのは、 BossRoomというゲームに直接関係あるもの(キャラクターとか)はすくないです。 ただし、GameDataSourceというGameObjectがあって、 そこにエモートなどが登録されているようです。 また、ConnectionManagerというオブジェクトに Assets/Scripts/ConnectionManagement/ConnectionManager.cs というスクリプトがあり、部屋の最大人数 MaxConnectedPlayers = 8; を設定しています。もし増減したかったらここをいじるべし。 そんなわけで、移った先のMainMenuシーンを見てみます。 色々ありますね。 【MainMenuState】 2つスクリプトがアタッチされています。 ・Network O

Unity, 3D↔2Dの変更

イメージ
Boss Roomが3Dのプロジェクトで 私の目的は2Dなので、3D↔2Dの変更ができればいいなと思ってググったらありました。 いんでぃーづ様 メニューから Edit > Project Setting > Editor と開き、 Default Behaviour Modeを2Dにすると、 新規にシーンを作成した際、2Dの設定で立ち上がるそうです。 Boss Roomでやってみましょう。 上記の設定を行っても特に変化はわかりませんでした。 というのも、既存のシーンは3Dなので、新規で作り直す必要があるようです。 MainMenuというシーンがあるので、MainMenu2Dというシーンを作ってみたら、 めっちゃ3Dでした。 > カメラをOrthographic設定にします。 > この設定にすることで二次元感が出ます。 という記述があったのでカメラを確認したところ、2Dで作ったシーンなのでカメラも 自動的にOrthographicでした。 なんでやろと思ったら、 右上の2Dのところ(電球みたいなマークの左、三日月みたいなマークの右) がオフになっていたので、クリックすると2Dになりました。(画像はオンの状態) あとはCanvasに色々置くとカメラに映るはずですね。 とりあえずおわり。

Boss Room: a Co-op, Multiplayer RPG Sampleを触ってみる

イメージ
Unity公式のマルチプレイヤーゲームのサンプル: Boss Room: a Co-op, Multiplayer RPG Sample を使おうということで、以下勉強中に書いたメモを残しておきます。 基本的には公式からのdocument: Getting Started with Boss Room の通りに進めていきますので、新しいことはないかもしれませんが、 元のマニュアルは英語なので、日本語訳がてらメモを残そう、ということです。 (後の自分のためにもなるからね) 結構DeepLの直訳です。早いからね。 【目的】 ・Boss Roomをインストールして、色々触ってみる、動かしてみる。 ・最終的には2Dのゲームを作りたいので、2Dのゲームに移行できるように、  マルチプレイヤー・ネットワーク関連の動作の原理を理解する。 (・せっかくなので3Dのマルチのゲームを作れるようにもなりたい) 【前提】 ・windows環境 ・Unityそのものの使い方はちょっと知っている  (私は2Dのパズルゲームを一つリリースしている程度なので、大した経験はない) (・PUN2は使ったことがある) 【Boss Room Overview Boss Roomの概要】 Boss Roomは、キャラクタの能力、遅延を見えなくするためのキャスティング・アニメーション、複製オブジェクト、RPC、Relay、Lobby、Authenticationサービスとの統合など、マルチプレイヤー・ゲーム・フローの背後にあるコンセプトやパターンを探求するのに役立つように設計されています。 このプロジェクトは、あなた自身のUnityゲームのための参考出発点として使用することも、要素を個別に使用することもできます。 【Getting the project Boss Roomの始め方】 Git からダウンロードして使います。私はDirect Downloadのところに書いている通り、Code ButtonからDownkiad Zipでダウンロードしました。Zipを解凍(展開)して、Unityの他のゲームプロジェクトと同じ場所に移動します。 【Opening the project for the first time Boss Roomを最初に開く時】 プロジェクトをダウンロードしたら、以下のステップに従ってプ

Boss Room, multiplayer games in Unity

今まではPhotonのnetwork serviceを使っていたのですが、2次元モンハンライクゲームを作りたいという野望が出てきたので、本格的なネットワークサービスを勉強するべきだという結論に至りました。やはり公式が用意しているサービスを利用するのが良いのかなと思い、調べたところ、 Boss Room というものがありました。これは3Dですが、ネットワーク機能、特にロビー機能なども一緒に入っているので、これをマルパクリして2Dゲームにしたいと思います。(公式もこれを使ってゲーム作ってねと言っている)