アニメやゲーム記事 プリキュア関連

notebook

IT UNITY

[UNITY]カードゲーム製作⑦

更新日:



YOUTUBEのHOWTO動画を参考にオリジナルのカードバトルをUNITYで製作するシリーズ第7回。

前回は各カードに表示されているHPの値を変化させること。さらにプレイヤーターン時の攻撃処理を実装しました。今回もひきつづき参考動画をもとにゲーム製作を進めていきます。

 

1.攻撃可能カードの可視化

カードの操作有無を明示化するためにカードの周りに枠を表示させます。枠表示されているカードのみが攻撃可能なカードとなりますが、現段階では画面上に枠を表示し、攻撃した場合には枠を非表示にするだけの処理実装となります。

1)実施内容

・PrefabsのCadeに対してあらたにSelectablePanelの要素を追加

・「CardController」クラスに「Attack」メソッドを実装(CardModelのAttackメソッドをCall)し、処理後にSelectablePanelを非表示化

・「GameManager」クラスでの「Attack」メソッドCallを修正

 

2)終了時の状態

2ターン目でプレイヤーがドラッグ&ドロップで攻撃するとカードの枠が非表示となりました。

 

2.攻撃回数と表示の修正

手札の攻撃可否を明示化するためにカードに枠を表示しましたが、手札に関しては枠表示は不要です。またプレイヤーにターンが戻ってきたときに枠表示が復活するように処理を実装します。また、枠表示されていないカードからの攻撃は無効化し、枠表示カードのみ攻撃するように実装します。

 

1)実施内容

・カードの枠表示についてPrefubsのCardでデフォルトを非表示にする

・「GameManager」クラスの「PlayerTurn」メソッドでプレイヤーフィールドのカードに枠表示処理を追加

・「CardController」クラスに「SetCanAttack」メソッドを新規追加→枠表示処理の実装

・「GameManager」クラスの「EnemyTurn」メソッドに場に出ている枠付きカードを取得し、取得されたカードのみ攻撃可能とする

 

2)サンプルからの変更点

FindAllをしようする際にサンプルのままではコンパイルエラーとなり一部変更しています。
// 修正前
CardController[] enemyCanAttackCardList = Array.FindAll(FieldCardList, card => card.model.canAttack);

// 修正後
CardController[] enemyCanAttackCardList = Array.FindAll(FieldCardList, n => card.model.canAttack);

FindAllでCard.model.canAttackがTrueのリストを格納する「card」変数が他のcardと競合したのかコンパイルエラーとなりました。その箇所については変数のため特に何でもよいみたいなので「x」指定に変更したところコンパイルエラーは解消しました。

 

3)終了時の状態

初期表示では枠表示はなし。2ターン目で場のカードに枠表示されるようになり、枠表示されたカードのみが攻撃可能となっています。

 

参考サイト

本記事についてはほぼ「Unityゲームスタジオ スタジオしまづ」さまの動画を参考に作業しております。本記事を元に興味をもった方がおりましたら、YOUTUBEサイトのほうで「登録」されてはいかがでしょうか?

 

 

 

 


GoogleAdsense

<script data-ad-client="ca-pub-5019825310139846" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>

GoogleAdsense

<script data-ad-client="ca-pub-5019825310139846" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>

おすすめ記事

-IT, UNITY
-

Copyright© notebook , 2021 All Rights Reserved Powered by STINGER.