photonを使ったオンライン対戦型ゲームを作りたいと思っております。 https://qiita.com/yakimeron/items/4826dce916cc9821f37b このサイトのunitychanが動いてるデモ動画のようにプレイヤー2人でRunゲーム(障害物を左右ジャンプなどで避けるゲーム)ができるのが目標です。プレイヤーは別々のレーンで走る感じでいいかなと思っています。(参考にしようと思ったのですがデータがなかったので...) サーバとクライアントはなんとなくしかわかっていないので、実際ステージや障害物をどう出すかもわからない状態です...
https://www.youtube.com/watch?v=wE9ggiXI4l8&list=PLkx8oFug638qVMIrtqOnwmqnW6o8WDgQ1&index=1 このyoutubeをみて勉強しようと思ったのですが、日本語翻訳で理解するのに限界がありました...
勉強足らずで申し訳ありませんが、ご回答のほどよろしくお願いいたします。
方法3・大きさの違うピースを用意する。 もしくは同じ画像で大きさを変えたピースを作っておく。
これ間違いです。 もしくはプログラムで大きさを変える。 と書きたかったところ。
いわゆるスライドパズルですな。
1.ピースの数で箱・枠の大きさをかえる方法。 方法はいくつかあるので、これが正解ってのはないです。
方法1・エディターで画面を作成せずにプログラムで管理する
方法2・2Dの場合はImageを作ると自動でCanvasという描画用の領域ができます。 CanvasはMainCameraを動かしても拡大縮小されないので、 CanvasのコンポーネントにCanvasScalerというのがあるので、 UI Scale Mode を 「Scale With Screen Size」に変更する。 Reference Resolution項目のXとYの数字を変動させるとCanvasの最大値が変わって 自動で拡大縮小できます。 ここの数値をプログラムで「ピースの数」を元に変動させればいいかな。
2.ランダムにピースを配置する方法。 (ピースの数で大きさが変わるのでその方法) プログラムでピースの座標をいじります。 gameObject.transform.localPosition ここにXYZの値がはいっています。
座標は Random.Range(0,10); この場合は0-9の値がランダムで作られる。 で作れますが、「すでにそこには他のピースがある」などをチェックしたり、 すべてのピースが所定の位置についたのでクリアなどを判別するため、 Unityの機能ではなくプログラムで管理するのが良いかな。
3.ピースを動かす際に、押しずらすように動かす方法。 プログラムで管理ならば、自分で座標を動かせばよいです。 https://docs.unity3d.com/ja/current/ScriptReference/Transform-localPosition.html
Unityの物理演算を使用したい場合は、AddForceで「押す」ことができます。 https://docs.unity3d.com/ja/current/ScriptReference/Rigidbody2D.AddForce.html
とはいえ文章だけだとわからんと思うので、作り方のページを作ろうと思います。
昔、C言語で作ったものはあるので、参考に置いておきます。 https://drive.google.com/open?id=1iyGN1tQv_XnxpHFc8I8pacfxgrWGyrzf ソース_1.odtというファイルが「user.cpp」というC++のプログラムをWordで見れるようにしたものです。 user.cppをメモ帳で開いてもプログラムがみれます。
for ( i = 0; i < 100; ++i ) { a = GetRand(24); b = GetRand(24); c = pazz_flag[a]; pazz_flag[a] = pazz_flag[b]; pazz_flag[b] = c; } たとえば、パーツをランダムに配置する部分ですが、最初パーツは綺麗に並んでいてpazz_flagにパーツの数字が入ってます。 適当に選んだ2つを入れ替える。という処理をしています。
いまさら質問が書き込まれているのに気が付いたー
引かないです。 隣のガチャ王は最近、当たるまで回して「勝った」とかのたまってますが、 俺はデレステのフェス(確率2倍期間)ぐらいしか回してないです。 天井までやったのはあんきらだけ。
photonを使ったオンライン対戦型ゲームを作りたいと思っております。
https://qiita.com/yakimeron/items/4826dce916cc9821f37b
このサイトのunitychanが動いてるデモ動画のようにプレイヤー2人でRunゲーム(障害物を左右ジャンプなどで避けるゲーム)ができるのが目標です。プレイヤーは別々のレーンで走る感じでいいかなと思っています。(参考にしようと思ったのですがデータがなかったので...)
サーバとクライアントはなんとなくしかわかっていないので、実際ステージや障害物をどう出すかもわからない状態です...
https://www.youtube.com/watch?v=wE9ggiXI4l8&list=PLkx8oFug638qVMIrtqOnwmqnW6o8WDgQ1&index=1
このyoutubeをみて勉強しようと思ったのですが、日本語翻訳で理解するのに限界がありました...
勉強足らずで申し訳ありませんが、ご回答のほどよろしくお願いいたします。
方法3・大きさの違うピースを用意する。
もしくは同じ画像で大きさを変えたピースを作っておく。
これ間違いです。
もしくはプログラムで大きさを変える。
と書きたかったところ。
いわゆるスライドパズルですな。
1.ピースの数で箱・枠の大きさをかえる方法。
方法はいくつかあるので、これが正解ってのはないです。
方法1・エディターで画面を作成せずにプログラムで管理する
方法2・2Dの場合はImageを作ると自動でCanvasという描画用の領域ができます。
CanvasはMainCameraを動かしても拡大縮小されないので、
CanvasのコンポーネントにCanvasScalerというのがあるので、
UI Scale Mode を 「Scale With Screen Size」に変更する。
Reference Resolution項目のXとYの数字を変動させるとCanvasの最大値が変わって
自動で拡大縮小できます。 ここの数値をプログラムで「ピースの数」を元に変動させればいいかな。
方法3・大きさの違うピースを用意する。
もしくは同じ画像で大きさを変えたピースを作っておく。
2.ランダムにピースを配置する方法。
(ピースの数で大きさが変わるのでその方法)
プログラムでピースの座標をいじります。
gameObject.transform.localPosition
ここにXYZの値がはいっています。
座標は Random.Range(0,10); この場合は0-9の値がランダムで作られる。
で作れますが、「すでにそこには他のピースがある」などをチェックしたり、
すべてのピースが所定の位置についたのでクリアなどを判別するため、
Unityの機能ではなくプログラムで管理するのが良いかな。
3.ピースを動かす際に、押しずらすように動かす方法。
プログラムで管理ならば、自分で座標を動かせばよいです。
https://docs.unity3d.com/ja/current/ScriptReference/Transform-localPosition.html
Unityの物理演算を使用したい場合は、AddForceで「押す」ことができます。
https://docs.unity3d.com/ja/current/ScriptReference/Rigidbody2D.AddForce.html
とはいえ文章だけだとわからんと思うので、作り方のページを作ろうと思います。
昔、C言語で作ったものはあるので、参考に置いておきます。
https://drive.google.com/open?id=1iyGN1tQv_XnxpHFc8I8pacfxgrWGyrzf
ソース_1.odtというファイルが「user.cpp」というC++のプログラムをWordで見れるようにしたものです。
user.cppをメモ帳で開いてもプログラムがみれます。
for ( i = 0; i < 100; ++i ) {
a = GetRand(24);
b = GetRand(24);
c = pazz_flag[a];
pazz_flag[a] = pazz_flag[b];
pazz_flag[b] = c;
}
たとえば、パーツをランダムに配置する部分ですが、最初パーツは綺麗に並んでいてpazz_flagにパーツの数字が入ってます。
適当に選んだ2つを入れ替える。という処理をしています。
いまさら質問が書き込まれているのに気が付いたー
引かないです。
隣のガチャ王は最近、当たるまで回して「勝った」とかのたまってますが、
俺はデレステのフェス(確率2倍期間)ぐらいしか回してないです。
天井までやったのはあんきらだけ。