カードゲームの作り方 保護中: 【一時的】デジタルカードゲームの作り方【応用編】 みじんこ 2023年1月30日 / 2024年6月30日 スポンサーリンク このコンテンツはパスワードで保護されています。閲覧するには以下にパスワードを入力してください。 パスワード: ABOUT ME みじんこ 【名前】みじんこ(ここのブログ書いてるひと) ・大学2年の時に「ゲームが作りたいー!!」って思ったのに、ゲームの作り方を解説してるサイトがことごとく何言ってんのか分かんなくて挫折した。 ・数年な時を経て「だったら俺が完全初心者にも超わかりやすいサイトを作ってやんよ!」って事で、初めてゲームを作ろうとしてる方向けに解説記事を書いてるよ。 スポンサーリンク スポンサーリンク
POSTED COMMENT 匿名 より: 2023年9月25日 9:45 PM 無事に完走することができました。 とても参考になりました。ありがとうございます。 自分としては ・デッキ編成画面の実装の解説 ・ガチャ(パック開封)の実装の解説 この2つが特に気になりますので解説していただけたら嬉しいです。 1 返信 みじんこ より: 2023年10月1日 5:44 PM コメントありがとうございます、そして完走お疲れ様です! デッキ編成とガチャの実装ですね。了解です。 「そろそろ次の記事を書こうかなー」と思っている所でしたので、解説記事をちまちまと書いていきたいと思いますね! 1 返信 匿名 より: 2023年10月2日 2:13 PM ありがとうございます!今までの記事のおかげでデッキ編成はなんとかなりました! ガチャの方はまだ実装出来ていないのですが ①全カードIDのリスト(またはパックから出るカードのリスト) ②カードIDと所持枚数を格納しておくDictionary を作って①の中からランダムでIDを出力して出力されたカードをDictionaryに追加でいけるかなー?と思っているのですが、大丈夫でしょうか? 1 返信 みじんこ より: 2023年10月9日 6:00 PM おー、素晴らしいですね! 機能の実装の仕方は色々あるかと思いますが、基本的にそのやり方で問題ないと思います!! 1 返信 秋 より: 2023年10月11日 11:27 PM お返事ありがとうございます! おかげさまでパック開封もなんとかなりました! 今はCPUのAI実装で悩んでおります 1 みじんこ より: 2023年11月4日 4:11 PM >秋さん CPUのAI実装は難しそうですよね、、 私もどうやればいいのか分からなかったので触れずにきました。。笑 もし進捗あればまた教えてください!!(・∀・) ヤック より: 2024年1月9日 2:17 AM こんばんは、こちらの記事非っっっ常に参考にさせていただいております。 これまでと同様とても分かりやすい解説ありがとうございます。 恐らく、もう既に何度か言われてるかもしれませんが、もしできそうであれば、オンライン対戦等のやり方の解説があると非常にありがたいです! 1 返信 みじんこ より: 2024年1月9日 9:34 PM ヤックさん、嬉しいコメントありがとうございます! 参考になったようでよかったです(´∀`) オンライン対戦のやり方解説は確かに需要ありそうですね、、 了解です!ちょっと私も勉強しないとですけど、 今書いてる解説シリーズを出し切ったら次はオンライン対戦の解説を出すので、首を長めにしてお待ちを、、! 返信 ヤック より: 2024年1月9日 11:51 PM 返信ありがとうございます それは非常に楽しみです。 有料記事出る前から参考にしてたので、待つだけなら大得意です。気長に待たせていただきますね。 1 返信 ワ より: 2024年1月19日 12:51 AM カードゲームの作り方、とても参考になりました! オンライン対戦、気長に待ちたいと思います! ガチャパックとデッキのはまだ取り掛かっていないのですが、この回で作ったゲームにも組み込める感じですかね? あと、質問ばかりで申し訳ないのですが、敵がモンスターをフィールドに召喚するアビリティを使ったときに、モンスターを召喚し終わる前に、以前出していたカードが攻撃可能になって攻撃を始めてしまうのですが WaitForSecondsの秒数で調整したらいいでしょうか? 色々自分で手を加えてしまったので、僕のコードがおかしいかもしれません・ 1 返信 みじんこ より: 2024年1月19日 10:35 AM コメントありがとうございます!! ワさんのゲーム制作のお力になれたならよかったです( ´∀`) パック、デッキの内容もシステム的には同じように作っているので、 今回作ってもらったゲームに取り込めると思います! ただ若干のコードの読み替え、書き換えとかは必要なので、 ゲーム制作に慣れてない場合は一回、別のプロジェクトで実装してみて、 内容を理解してから、今回のゲームに復習がてら組み込むのがおすすめです。 >あと、質問ばかりで申し訳ないのですが、敵がモンスターをフィールドに召喚するアビリティを使ったときに、モンスターを召喚し終わる前に、以前出していたカードが攻撃可能になって攻撃を始めてしまうのですが >WaitForSecondsの秒数で調整したらいいでしょうか? 恐らく効果によって待つ秒数が変わると思うので、秒数で調整するのは拡張性の面であまり推奨ではないですね。 記事の内容通りであれば敵のモンスターの召喚時にも、下記コードのようにyield returnで効果処理が終わるまで処理止めているので、攻撃し始めることはないと思います。 yield return StartCoroutine(SummonCard(1, false)); EnemyTurnメソッド内のSummonCardが、yield return StartCoroutineで実行されているか。 もしくはSummonCardメソッドの内部で実行されている処理もyield returnで処理を止めているか。 このあたりを確認して頂けると原因が見つかるかと思います!! また不明点あったらコメントください! 返信 ワ より: 2024年1月19日 2:47 PM 原因わかりました!ありがとうございます! 返信 みじんこ より: 2024年1月19日 5:05 PM お、よかったです! また何かあったら聞いてください。(`・ω・´) 返信 ワ より: 2024年1月20日 12:06 PM すみません、また質問いいでいすか。 ShowChangeTurnPanelのパネルの表示中に手札のカードをフィールドにドラッグすると(ドラッグ自体はできない)手札の中に攻撃カードなどが生成されて表示がおかしくなってしまいます。 お忙しいとは思いますが、ご教授いただければ幸いです。 1 みじんこ より: 2024年1月23日 6:39 PM 返信遅くなってすみません! あー、確かにそのような挙動になりますね。 色々対処の仕方はあるかと思いますが、 一番簡単にターン変更のパネルを画面全体にしてドラッグ自体が出来なくしてしまうのはいかがでしょうか?? あるっす より: 2024年10月22日 3:14 PM 質問失礼します 第1章の最後で実行するとオブジェクトが参照ができていないとエラーをはかれました。 コードはすべてコピペでやっているのですが… ご教授いただければ幸いです 1 返信 みじんこ より: 2024年10月23日 12:29 PM オブジェクト参照系のエラーは恐らくコードでなく、 何かしらのオブジェクトのアタッチが出来てないことによるエラーかと思います。 第一章までは問題なく動いていたなら、確定でそこのミスだと思うので、 『第一章のアタッチするところ』を重点的に見返してみてください! 返信 あるっす より: 2024年11月12日 2:19 PM 解決しました。ありがとうございました! 1 返信 みじんこ より: 2024年11月14日 8:27 AM よかったです!! 返信 akasa より: 2024年11月11日 2:27 PM Transform playerHand = GameObject.Find(“PlayerHand”).GetComponent(); Transform playerHand = GameObject.Find(“PlayerHand”).GetComponent(); モンスターの能力でカードを引くときにこの文章にエラーがあるといわれるのですがどのような問題が考えられますか?CardContollorの50行あたりのプログラムです 返信 akasa より: 2024年11月11日 2:28 PM 二行目は気にしないでください 返信 みじんこ より: 2024年11月12日 8:33 AM ※下記のコードであることは前提で話を進めます。(恐らくakasaさんのコメント表示の問題だと思いますが念のため。) Transform playerHand = GameObject.Find("PlayerHand").GetComponent(); んー、パッと見で思いつくのは、 Hierarchy上に「PlayerHand」という名前のモノがないのでエラーが出ているんだと思いますが、 もしかして、そもそもゲームを実行する以前にコードを書いた時点でエラーが出てるってことですかね?? もしエラー内容とかが分かるなら、教えてもらえるとお力になれるかもです!! 返信 akasa より: 2024年11月18日 2:07 PM 解決しました。 原因はPlayerHandのPが小文字でした… 色々とご教授ありがとうございました。 返信 みじんこ より: 2024年11月19日 3:39 PM やりがちなやつですね!笑 解決したようでよかったです! 返信
無事に完走することができました。
とても参考になりました。ありがとうございます。
自分としては
・デッキ編成画面の実装の解説
・ガチャ(パック開封)の実装の解説
この2つが特に気になりますので解説していただけたら嬉しいです。
コメントありがとうございます、そして完走お疲れ様です!
デッキ編成とガチャの実装ですね。了解です。
「そろそろ次の記事を書こうかなー」と思っている所でしたので、解説記事をちまちまと書いていきたいと思いますね!
ありがとうございます!今までの記事のおかげでデッキ編成はなんとかなりました!
ガチャの方はまだ実装出来ていないのですが
①全カードIDのリスト(またはパックから出るカードのリスト)
②カードIDと所持枚数を格納しておくDictionary
を作って①の中からランダムでIDを出力して出力されたカードをDictionaryに追加でいけるかなー?と思っているのですが、大丈夫でしょうか?
おー、素晴らしいですね!
機能の実装の仕方は色々あるかと思いますが、基本的にそのやり方で問題ないと思います!!
お返事ありがとうございます!
おかげさまでパック開封もなんとかなりました!
今はCPUのAI実装で悩んでおります
>秋さん
CPUのAI実装は難しそうですよね、、
私もどうやればいいのか分からなかったので触れずにきました。。笑
もし進捗あればまた教えてください!!(・∀・)
こんばんは、こちらの記事非っっっ常に参考にさせていただいております。
これまでと同様とても分かりやすい解説ありがとうございます。
恐らく、もう既に何度か言われてるかもしれませんが、もしできそうであれば、オンライン対戦等のやり方の解説があると非常にありがたいです!
ヤックさん、嬉しいコメントありがとうございます!
参考になったようでよかったです(´∀`)
オンライン対戦のやり方解説は確かに需要ありそうですね、、
了解です!ちょっと私も勉強しないとですけど、
今書いてる解説シリーズを出し切ったら次はオンライン対戦の解説を出すので、首を長めにしてお待ちを、、!
返信ありがとうございます
それは非常に楽しみです。
有料記事出る前から参考にしてたので、待つだけなら大得意です。気長に待たせていただきますね。
カードゲームの作り方、とても参考になりました!
オンライン対戦、気長に待ちたいと思います!
ガチャパックとデッキのはまだ取り掛かっていないのですが、この回で作ったゲームにも組み込める感じですかね?
あと、質問ばかりで申し訳ないのですが、敵がモンスターをフィールドに召喚するアビリティを使ったときに、モンスターを召喚し終わる前に、以前出していたカードが攻撃可能になって攻撃を始めてしまうのですが
WaitForSecondsの秒数で調整したらいいでしょうか?
色々自分で手を加えてしまったので、僕のコードがおかしいかもしれません・
コメントありがとうございます!!
ワさんのゲーム制作のお力になれたならよかったです( ´∀`)
パック、デッキの内容もシステム的には同じように作っているので、
今回作ってもらったゲームに取り込めると思います!
ただ若干のコードの読み替え、書き換えとかは必要なので、
ゲーム制作に慣れてない場合は一回、別のプロジェクトで実装してみて、
内容を理解してから、今回のゲームに復習がてら組み込むのがおすすめです。
>あと、質問ばかりで申し訳ないのですが、敵がモンスターをフィールドに召喚するアビリティを使ったときに、モンスターを召喚し終わる前に、以前出していたカードが攻撃可能になって攻撃を始めてしまうのですが
>WaitForSecondsの秒数で調整したらいいでしょうか?
恐らく効果によって待つ秒数が変わると思うので、秒数で調整するのは拡張性の面であまり推奨ではないですね。
記事の内容通りであれば敵のモンスターの召喚時にも、下記コードのようにyield returnで効果処理が終わるまで処理止めているので、攻撃し始めることはないと思います。
yield return StartCoroutine(SummonCard(1, false));
EnemyTurnメソッド内のSummonCardが、yield return StartCoroutineで実行されているか。
もしくはSummonCardメソッドの内部で実行されている処理もyield returnで処理を止めているか。
このあたりを確認して頂けると原因が見つかるかと思います!!
また不明点あったらコメントください!
原因わかりました!ありがとうございます!
お、よかったです!
また何かあったら聞いてください。(`・ω・´)
すみません、また質問いいでいすか。
ShowChangeTurnPanelのパネルの表示中に手札のカードをフィールドにドラッグすると(ドラッグ自体はできない)手札の中に攻撃カードなどが生成されて表示がおかしくなってしまいます。
お忙しいとは思いますが、ご教授いただければ幸いです。
返信遅くなってすみません!
あー、確かにそのような挙動になりますね。
色々対処の仕方はあるかと思いますが、
一番簡単にターン変更のパネルを画面全体にしてドラッグ自体が出来なくしてしまうのはいかがでしょうか??
質問失礼します
第1章の最後で実行するとオブジェクトが参照ができていないとエラーをはかれました。
コードはすべてコピペでやっているのですが…
ご教授いただければ幸いです
オブジェクト参照系のエラーは恐らくコードでなく、
何かしらのオブジェクトのアタッチが出来てないことによるエラーかと思います。
第一章までは問題なく動いていたなら、確定でそこのミスだと思うので、
『第一章のアタッチするところ』を重点的に見返してみてください!
解決しました。ありがとうございました!
よかったです!!
Transform playerHand = GameObject.Find(“PlayerHand”).GetComponent();
Transform playerHand = GameObject.Find(“PlayerHand”).GetComponent();
モンスターの能力でカードを引くときにこの文章にエラーがあるといわれるのですがどのような問題が考えられますか?CardContollorの50行あたりのプログラムです
二行目は気にしないでください
※下記のコードであることは前提で話を進めます。(恐らくakasaさんのコメント表示の問題だと思いますが念のため。)
Transform playerHand = GameObject.Find("PlayerHand").GetComponent();
んー、パッと見で思いつくのは、
Hierarchy上に「PlayerHand」という名前のモノがないのでエラーが出ているんだと思いますが、
もしかして、そもそもゲームを実行する以前にコードを書いた時点でエラーが出てるってことですかね??
もしエラー内容とかが分かるなら、教えてもらえるとお力になれるかもです!!
解決しました。
原因はPlayerHandのPが小文字でした…
色々とご教授ありがとうございました。
やりがちなやつですね!笑
解決したようでよかったです!