LoginSignup
0
0

More than 1 year has passed since last update.

【初心者向けテスト】コマンドバトル【解説・チュートリアル】

Last updated at Posted at 2021-11-30

はじめに

これは、

の解答解説です。チュートリアルとしても使えます。

☆敵オブジェクトとぶつかったらバトルシーンに移動する

まず、プロジェクトを開いて再生して、今の状況を確認しましょう。
・ペンギンがPlayerで、ライオンがEnemyという名前になっている?
・矢印キーでプレイヤーが動きますか?
・ライオンにぶつかる?(すり抜けない=コライダーがちゃんとついている)

HitBoxというオブジェクトが既に入っています。ここにPlayerが入ったらシーン移動が起きるようにしましょう。
IsTriggerにチェックを入れて
スクリーンショット 2021-11-23 15.30.34.png

Playerスクリプトを開きます。
シーン移動のコードを書きましょう!
コードは、覚えなくて大丈夫!!「Unity シーン移動」とかで検索するとすぐ出てくるので、調べて書くクセをつけましょう。
スクリーンショット 2021-11-23 15.31.57.png

スクリーンショット 2021-11-23 15.32.02.png

最後に、Unity側の設定でやるべきことがあったのを覚えてますか?
スクリーンショット 2021-11-23 15.36.31.png
スクリーンショット 2021-11-23 15.36.38.png

設定で、二つのシーンを登録しましょう。

できたら保存を忘れずに!次はBattleシーンを開いてね

☆バトルシーンが開いたらすぐ「PlayerHP:100」と「EnemyHp:100」とコンソールに表示する

コンソールに数値を表示する、つまり「デバッグ」のやり方がわからない人は
「Unity デバッグ やり方」などで検索しましょう。

まずはPlayerとEnemyそれぞれのHP100を宣言します。
スクリーンショット 2021-11-23 15.43.29.png

今回扱うHPは整数なので、int型で宣言します。
さらに、ゲーム始まって最初にだけHPは100から始まるよということを表示したいので、
デバッグを使って、それぞれ表示します。

☆☆こうげきボタンを押したら...

  →相手のHP-10(さらに、EnemyHP:〇〇とコンソールに表示する)
  →自分のHP-5(さらに、PlayerHP:〇〇とコンソールに表示する)

どんなコードを書くかわかりましたか?
全くわからなかったら、「Unity ボタン 押したら」とかで検索して、できるところまで書いてみましょう。

BattleScriptを開きます。
Update()の外に書きます。

スクリーンショット 2021-11-23 15.51.03.png

AttackButton用の関数を用意して、その中に書きます。
プログラミングの引き算のやり方を覚えてましたか?
さらに、それぞれ結果がわかるようにデバッグで表示しましょう。

できたら保存して、Unityで設定します。
BattleHpManager というオブジェクトが入っているので、そこにBattleスクリプトをアタッチしましょう。
スクリーンショット 2021-11-23 15.54.02.png

次に、Canvasの下にあるAttackButtonをクリックしてInspectorウインドウを開き、BattleHpManagerを矢印のようにアタッチしましょう。
スクリーンショット 2021-11-23 15.56.55.png

次に、赤枠のようにして、さっき作ったAttackButton用の変数を設定します。
スクリーンショット 2021-11-23 16.00.02.png

再生して確認しましょう!
同じ手順で、

・かいふくボタンを押したら→自分のHP+20(さらに、PlayerHP:〇〇とコンソールに表示する)

も作れます。できなかった人は、上の手順を見ながらやってみましょう。

コードはこんな感じにかけてればOK(関数名は自分でわかりやすく決められていればOK)
スクリーンショット 2021-11-23 16.04.34.png

☆☆プレイヤーのHPが0になったら「負け」敵のHPが0になったら「勝ち」とコンソールに表示する

ヒントはif文!全く書けなかったらこれも一度調べてみてね。
if文を使った基本的なコードなので書けるように頑張ろう!

スクリーンショット 2021-11-23 16.07.55.png
こんなコードになりましたか?Updateの中に書きましょう。
※追記:こうげきボタンの関数の中に入れるのがベストです!(毎フレーム判定する必要はないので) 一応どちらでもOK
ちなみに、UpdateとStartの違いはわかりますか?わからなかったらメンターに質問してね〜

☆☆☆アイテムボタンを押したら→プレイヤーの攻撃力が1.5倍になる

全くやり方が思い浮かばない人は、一緒に考えてみましょう。
まず、プレイヤーの攻撃力はどうやって書いていましたか?コードを振り返りましょう。
こうげきボタンを押した時、enemyHPから-10しましたね。
スクリーンショット 2021-11-23 16.13.03.png
名称未設定2.001.jpeg

つまりこれがプレイヤーの攻撃力になります。
なので、PlayerPower(攻撃力)を10と宣言して
スクリーンショット 2021-11-23 16.24.17.png

ここに変数で置き換えます。
スクリーンショット 2021-11-23 16.24.21.png

そして、アイテムボタン用の関数を用意して、アイテムボタンが押されたらplayerPowerが1.5倍になるようにすれば完成ですね!プログラミングでの掛け算の書き方を覚えてますか?わからなかったら「C# 掛け算」などで検索しましょう!

スクリーンショット 2021-11-23 16.30.04.png

あれ?このままだとエラーが出ますね。何がおかしいかわかりますか?これがわかれば100点!

「1.5」と、上の方の変数を宣言した行に注目!
playerPowerは、int型で宣言しましたが、int型は整数を扱う型ですよね?
なのに、ここで「1.5」という小数を扱ってしまっています。
なので、型が一致しないのでエラーが出ていることがわかりますね。

では、小数の時は何を使って宣言するか覚えていますか?わからなければ検索!

floatですね!書き換えましょう
スクリーンショット 2021-11-23 16.33.44.png

まだエラーは出ます。小数には、fをつけるんでしたね

スクリーンショット 2021-11-23 16.34.19.png

まだエラーが出るのですが、なぜかわかりますか?
スクリーンショット 2021-11-23 16.34.22.png

enemyHPとplayerPowerをつかって計算しています。異なる型の変数同士で一つの計算をしようとしているからです。なので、

スクリーンショット 2021-11-23 16.34.38.png

enemyHPの方もfloatにしておきましょう。
最後に、Unity側でボタンの関連付けを忘れずに行いましょう。

おわり

以上で完成です!

ただ、このままだと、アイテムの使用制限がないのでこのままだと攻撃力を無限に1.5倍にできちゃったりと、ゲームとしては良くなかったり、HPがコンソールでしか見れなかったりするので、余裕のある人はより良いゲームに改変してみてね。

さらに、
スクリーンショット 2021-11-23 16.42.58.png
こんな感じでPlayerHPから引かれる数(=敵の攻撃力)を書き換えると、敵の攻撃力がランダムになってよりゲーム性が増したりします!

このワークで復習できた技術

重要順
・変数、四則演算、デバッグ
・if文
・衝突判定 OnTrigger
・シーン切り替え
・Start() Update()
・Button

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0