Unityに関連する記事です

 以下の内容で実装を進めていきます。

手順17 ーロジックの学習◆
30.味方キャラに攻撃回数の機能と、指定した攻撃回数に達したら破壊するという仕様と運用のロジックを考えて実装する
31.敵キャラが攻撃を受けた際に一時移動を停止し、その後移動を再開するという仕様と運用のロジックを考えて実装する



 新しい学習内容は、以下の通りです。

 ・ロジックの考え方



30.味方キャラに攻撃回数の機能と、指定した攻撃回数に達したら破壊するという仕様と運用のロジックを考えて実装する

1.設計を考える


 CharaController スクリプト内に TODO で記述している攻撃回数に関連する処理を設計して、実装してみましょう。

 この処理には、現在の攻撃回数を管理する変数が必要になります。
この値をカウントアップ、あるいはカウントダウンさせていって、特定の値に達したらキャラを破壊する、というロジックが組みやすいと思います。

2.CharaController スクリプトの参考コード


 ここでは攻撃するたびに攻撃回数をカウントダウンしていき、0 になったらキャラを破壊する設計で実装しています。
攻撃回数用の変数は private 修飾子ですが SerializeField属性をつけることでインスペクターから確認できるようにしています。


CharaController.cs


 スクリプトを修正したらセーブを行います。


3.残りの攻撃回数をキャラの頭上に表示する機能を実装する


 キャラの残り攻撃回数が実装できたら、その回数をキャラの頭上に表示するための機能を実装してみましょう。

 キャラのゲームオブジェクトの子オブジェクトに Canvas ゲームオブジェクトを作成し、RenderMode を WorldSpace にして設定を行う方法があります。
こちらの記事を参考にしてみてください。

 まずはキャラのゲームオブジェクト内に残り攻撃回数を表示するためのゲームオブジェクトを作成してから、スクリプトの修正を行うようにします。
残り攻撃回数の値が、キャラの頭上に表示するにはどのような制御が行えればいいのかをイメージしながらロジックを考えてください。


<参考 Chara ゲームオブジェクトのプレファブ>



<各インスペクターと Scene ビュー画像>

Canvas ゲームオブジェクト






txtAttackCount ゲームオブジェクト






imgAttackIcon ゲームオブジェクト




 どのゲームオブジェクトのどのコンポーネントの制御を行えば残りの攻撃回数が画面に表示できるか、しっかりとイメージしてください。


4.CharaController スクリプトの参考コード


 TODO の部分を目標に処理を考えてみましょう。

CharaController.cs

 <= クリックすると開きます。


 スクリプトを修正したらセーブを行います。

 ゲームを実行して、キャラの頭上に残りの攻撃回数が表示されており、かつ、敵を攻撃するたびに値が更新されれば制御成功です。


31.敵キャラが攻撃を受けた際に一時移動を停止し、その後移動を再開するという仕様と運用のロジックを考えて実装する

1.設計を考える


 完全に敵の移動を停止する場合には、移動の一時停止と再開についてはすでにメソッドが用意してありますので、こちらを上手く活用した設計を考えてみてください。

 一時的に移動速度を遅くする、という場合であれば、DOTween に TimeScale という変数がありますので、そちらを利用してみましょう。
この処理は tween 変数に対して実行できるもので、tween.timeScale = 0.05f; というように値を記述すると、DOTween の処理の時間の経過が制御できます。

 今回であれば tween 変数には DOPath メソッドが代入されていますので、移動の時間の経過速度を 1.0f から 0.05f まで下げてしまう、という制御になります。
戻す場合には再度 tween.timeScale = 1.0f; と代入すれば以前と同じ移動の時間の経過速度に戻ります。逆に 1.0f よりも大きくすれば早送りの処理も出来ます。

 すぐに値を戻してしまうと変化が見られないため、コルーチンの中断処理を上手く活用して、少し経ってから元の時間の経過速度に戻す処理を設計してみてください。


2.EnemyController スクリプトの参考コード


 どのような処理を、どのタイミングで記述すればいいかを考えて、TODO の情報を最大限に活用しましょう。
自分でプログラムを書く際には、TODO の記述も自分で行うことになりますので、今から処理の組み立て方に慣れていくようにしてください。


EnemyController.cs

 <= クリックすると開きます


 スクリプトを修正したらセーブをします。

 ゲームを実行して、敵が攻撃を受けるたびに一瞬止まるようになれば制御成功です。




 以上でこの手順は終了です。

 次は 手順18 −キャラ配置用のポップアップの作成− です。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu



プログラムの基礎学習

コード練習

技術/知識(実装例)

2Dおはじきゲーム(発展編)

2D強制横スクロールアクション(発展編)

3Dダイビングアクション(発展編)

2Dタップシューティング(拡張編)

レースゲーム(抜粋)

2D放置ゲーム(発展編)

3D脱出ゲーム(抜粋)

2Dリアルタイムストラテジー

2Dトップビューアドベンチャー(宴アセット使用)

3Dタップアクション(NavMeshAgent 使用)

2Dトップビューアクション(カエルの為に〜、ボコスカウォーズ風)

3Dトップビューアクション(白猫風)

VideoPlayer イベント連動の実装例

VideoPlayer リスト内からムービー再生の実装例(発展)

AR 画像付きオブジェクト生成の実装例

AR リスト内から生成の実装例(発展)

private



このサイト内の作品はユニティちゃんライセンス条項の元に提供されています。

管理人/副管理人のみ編集できます