カードゲームの作り方

【解説通りに作るだけ】Unityのデジタルカードゲーム作り方10.5 答え合わせ編

前回までの記事で、敵カードの攻撃実装まで出来たね!

やってない人は前回の記事参照↓

【解説通りに作るだけ】Unityのデジタルカードゲーム作り方⑩ 敵の攻撃実装編 前回までの記事で、マナポイントの実装まで出来たね! やってない人は前回の記事参照↓ http://yuus01.info/...

今回の記事では、前回の答え合わせをしていくよ!!

完成形はこんな感じ↓

前回の内容がわかっていればそこまで難しくなかったはず!!

出来た人も、出来なかった人もサックリやっていこー!!!

演習問題ってなんだっけ?

忘れてるひとが多いと思うから、まずは演習問題の振り返りをしていこう!

問題としては、

「敵の攻撃対象をランダムにしてみよう!」

ってものだったよね。

ということは、下記の2つが分かっている必要があるよ!

  • 敵のカードが攻撃対象を決めているコード
  • ランダム値の作成方法

このヒントを見て、「自分でも出来そうだ!!」ってひとはまずは自分でやってみてね!!

次からは実際に演習問題を解説していくよ!!

演習問題の解説!!

①攻撃対象を決めているコードを見つける

それではまずは敵のカードが攻撃対象を決めているコードを見つけよう!

コードで言うと、GameManagerクラスEnemyTurnメソッドの中で、

「敵フィールドに攻撃可能なカードがあれば全部攻撃するよー!」

って処理をしているところだね。

実際のコードでは下記のオレンジの部分になるよ↓

関係ある部分だけ抜き出すと、

CardController defenceCard = playerFieldCardList[0]; 
 →playerFieldCardList「0番目のカード」defenceCard(=攻撃対象のカード)とする
CardBattle(attackCard, defenceCard); 
 →attackCard(攻撃するカード)とdefenceCardをバトルさせるよ

こんな感じになってるよね?

ということは、今「0番目」が攻撃対象になっているところを、

「ランダムな番号」を攻撃対象にすれば実装できそうだよね!!

雑に言うとこんな感じ↓

CardController defenceCard = playerFieldCardList[ランダムな数];

というわけで、

「あとはランダムな数をぶち込めば完成だぜ!!」

って感じなので次はランダムな値を入れる方法を見ていこう!

②ランダムな値の作成方法と、その範囲

調べればすぐわかるけど、ランダムな値の作り方はこんな感じ↓

UnityEngine.Random.Range(最小値, 最大値)

※ただし最大値は含まれないので注意!!

具体的に言うと、

int a = UnityEngine.Random.Range(0, 100); という場合は、

0から99の間のランダムな数が生成されるよ!!(100にはならないってこと)

では次に実際にコードに書いていくけど、

この場合のランダムな数字の範囲がいくつなのかを考えてみよう!

例えば自分のフィールドに3体カードがあるとする場合は、

0〜2の数がランダムに出ればいいよね?

つまりコードで言うと、UnityEngine.Random.Range(0, 3)になる。

自分のフィールドに1体の場合は0が出ればいいので、

UnityEngine.Random.Range(0, 1)になる。

つまり、最大値=自分のフィールドのカード枚数ってことになるよね!!

ということで、自分のフィールドのカード枚数を取得して、ランダム値の最大範囲にぶち込めばOK!!

ざっくり言うとこんな感じ↓

int defenceCardNumber = UnityEngine.Random.Range(0, playerFieldCardList.Length);
  → ランダムな数(最小値:0〜最大値:自分フィールドのカード枚数)を、defenceCardNumberって変数にぶち込む

CardController defenceCard = playerFieldCardList[defenceCardNumber]; 
 →自分のフィールドのランダム番目のカードdefenceCardとする

CardBattle(attackCard, defenceCard);
 →そのカードをバトルさせる

実際のコードではこうだね↓ オレンジの部分は追記&修正してみよう

ではではエラーが出てないことを確認して、実際に動かしてみよう!!!

こんな感じに敵の攻撃がランダムになったかな??

という訳で演習は完了!!お疲れ様でした!

まとめ

今回大事になるのは、ランダムな値の取得方法だね。

ランダム値の作成方法

UnityEngine.Random.Range(最小値, 最大値)

ゲームではほんとによく使うのでこの機に覚えておこう!

という訳で今回は終わりっ!!また今度!

次の記事↓

【解説通りに作るだけ】Unityのデジタルカードゲーム作り方⑪ アニメーション編 前回までの記事で、敵の攻撃の実装まで出来たね! やってない人は前回の記事参照↓ http://yuus01.info/g...

前の記事↓

【解説通りに作るだけ】Unityのデジタルカードゲーム作り方⑩ 敵の攻撃実装編 前回までの記事で、マナポイントの実装まで出来たね! やってない人は前回の記事参照↓ http://yuus01.info/...

ABOUT ME
みじんこ
【名前】みじんこ(ここのブログ書いてるひと) ・大学2年の時に「ゲームが作りたいー!!」って思ったのに、ゲームの作り方を解説してるサイトがことごとく何言ってんのか分かんなくて挫折した。 ・数年な時を経て「だったら俺が完全初心者にも超わかりやすいサイトを作ってやんよ!」って事で、初めてゲームを作ろうとしてる方向けに解説記事を書いてるよ。

POSTED COMMENT

  1. ジェリーフィッシュ より:

    更新お疲れ様です!
    無理のないペースで毎秒投稿お待ちしてます。

    1
    • みじんこ より:

      >ジェリーフィッシュさん
      いつもコメントありがとうございます!(´;ω;`)アリガタヤ
      予定より遅れて申し訳ないですが、近々出せると思うのでもう少々お待ちを、、、!!

      1
  2. おまめ より:

    記事を参考にゲームを作成させてもらってます。
    味方同士のバトルをすると破壊されずに場に残るのですがなぜか相手のリーダーのHPが減ってしまうバグが解決できないのでアドバイスを頂けると嬉しいです。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です