今回作るゲームは画像のような3Dシューティングゲームです
ス○ーフォッ○スみたいですねw
まずはこちらのUnityパッケージをダウンロードして下さい
パッケージを入れる方法はこちら
プレイヤーの移動
この手のシューティングゲームは
②WASDキーで上下左右に動くようにする
③キーを押した方向に機体が傾くようにする
④クリックされたら、弾のクローンを生成する
⑤弾を生成したら前方に飛ぶ
これが基本です。ではいきましょう♪
今回もScratchだとどんなブロックにするのか、参考にしながら考えていく形式を取ります
C#の基本的なルールと構造の説明
C#にはいくつかルールがあります。
②何をどこに入力するのかエリアを理解する
③エリアとエリアは{}でとじる
④行の最後は;をつける
以上の点をしっかりおさえておきましょう!
今回は特に
「ゲーム開始中、繰り返し実行されるエリア」
にコードを入力していきますので、そこに注目して下さい
それでは、画像を参考にC#スクリプトを作ります
真ん中らへんのAssetsを右クリック、Createにカーソルを合わせて、C# Scriptをおします
画像のようにスクリプトの名前をPlayerと入力しましょう
入力したらダブルクリックしてスクリプトを入力する画面を開きます
主人公が自動で前に進むようにする
これをScratchで表すと、以下の画像のようになります
見ての通り「ずっと」にはさまれているので、画像の部分に入力します
入力するコードはこちらの表にあるので探してみましょう
このブロックはどんなコードを入力するのか、表から探しましょう
今回は
transform.position += transform.TransformDirection(Vector3.forward * 10);
となります
入力したら画像のようにスクリプトをPlayerにD&Dしましょう
正解はこちら
この状態でテストプレイしてみると…
このままだと、早すぎるのでスピードを自由に調整できるようにします
Speedという変数を作り、10と入力したところに代入します
Speedという変数を作る
変数よく分からんって人はこちらを見て下さい
変数とは?
例えば、身の回りだと時間とか気温とか、ゲームだと体力とかが変数になります
プログラミングでは、体力を表す数字をHPという変数だということにして、HPを減らしたり増やしたりすれば、ダメージを受けたり回復したりできるというわけです
#C#での変数の作り方はこちらを参考にして下さい
②変数はアクセス修飾子 型 変数名;と入力します。
アクセス修飾子については以下を参考にして下さい。
型については以下を参考にして下さい。
例えば他のオブジェクトでも使用可能なfloat型のgetabakoという変数を作る場合
public float getabako; と入力します。
今回は
public float Speed;
と入力します
publicにすることでエディタ上で編集できるようになり、
floatとすることで、小数単位の数字が入力できるようになります
そして数字の部分にSpeedと入力しておくと、エディタ上で入力した数字が反映されます
0.6~0.8くらいにしておきましょう
これをScratchで表すと、以下の画像のようになっていて、
現在スクリプトは以下のようになっています
WASDキーで上下左右に動くようにする
これをScratchで表すと、以下の画像のようになります(これより以前の部分も含めています)
1つ目のもしWキーが押されたならy座標を10ずつ変える」は
1つずつ表を見ていくと、
①もし~ならは、
if()
{
}
と表します
②Wキーが押されたならは、条件です
Input.GetKey(KeyCode.W))
と表します
これをそのままifのあとの()の中に入力します
③y座標を10ずつ変えるは、実行する内容です
transform.position += new Vector3 (0, 10, 0);
と表します
これをそのまま{}の中に入力します
まとめると以下の図のようになります
全部合わせると、
if(Input.GetKey(KeyCode.W)))
{
transform.position += new Vector3 (0, 10, 0);
}
となります
数字はここも10では大きいので小数がオススメです
小数にする際にはfを忘れずに
正解はこちら♪
他のIf文も同じ要領で打っていきましょう
正解はこちら♪
キーを押した方向に機体が傾くようにする
これをScratchで表すと、以下の画像のようになります(これより以前の部分も含めています)
それぞれのif文の中に入力していきましょう
○度に向けるは
transform.rotation = Quaternion.Euler(0, 90, 0);
と書きます
正解はこちら♪
ビームのクローンを生成する
これをScratchで表すと、以下の画像のようになります(これより以前の部分も含めています)
クローンを生成される場合、表の注意事項をよく読んで生成された時の回転をプレイヤーと同じ回転にしましょう
①publicのGameObject型のbeamという変数を作る
②生成されたクローンをプレイヤーと同じ回転にする
という点に気をつけて下さい
クローンの生成は
Instantiate(クローン生成するもの.gameObject, クローンを作成する場所, クローンの向き);
と書きます
今回の場合は
Instantiate(beam.gameObject, this.transform.position, Quaternion.identity);
となります
正解はこちら♪
※publicのGameObject型で変数を作った場合、どのオブジェクトなのか、スクリプトにドラッグ&ドロップで指定することができます
画像を参考にやってみて下さい
ビームを飛ばす
Assets → Prefabsフォルダにあるbeamに貼り付けて下さい
まずはプレイヤーと同様にbeamというスクリプトを作りましょう
今回は分からなくなったら正解と照らし合わせながらやってみて下さい
ビームの挙動ですが、
②数秒たったら消える
③敵に当たったら消える
という、よくある感じにしていこうと思います
これをScratchで表すと、以下の画像のようになります
1つ目の隠すのところが変な感じになっていますが、Unityだと○秒後に隠すということができるので、
そのようになっています
あと、衝突判定は2種類ありますが、今回は画像の方を使って下さい
getabakoの部分には敵のタグであるEnemyをつけます
また、衝突判定のスクリプトは画像の場所に入力しましょう
こちらは3点注意事項があります
②衝突するもののどちらかにはRigidBody(重力判定)をつける
③衝突される方にはスクリプトで記述されているタグ(今回の場合はEnemy)をつける
今回はあらかじめ設定してありますが、自分でやる場合には注意事項をよく読んで下さい
正解はこちら♪
追加ミッション
敵を爆発させて倒せるようにしよう
これをScratchで表すと、以下の画像のようになります
ヒント
②ビームのタグはbeamです
③爆発のクローンを生成するにはpublicでGameObject型の変数を作る必要があります
④爆発のエフェクトはAssets → Prefabsフォルダの中にあります
正解はこちら♪
敵やステージに触れたらプレイヤーがダメージを受けるようにしよう
これをScratchで表すと、以下の画像のようになります
ヒント
②敵のタグはEnemy、ステージのタグはStageです
③爆発のクローンを生成するにはpublicでGameObject型の変数を作る必要があります
④爆発のエフェクトはAssets → Prefabsフォルダの中にあります
正解はこちら♪縦に長くなってきたので追記部分のみ
テストプレイをしてみると…
以上になります
お疲れ様でした♪
コメント
コメント一覧 (5件)
[…] シューティング […]
こちらの記事を参考に勉強しているのですが、「ビームを飛ばす」の「beam.cs」スクリプトはどのオブジェクトに設定したらいいのでしょうか。
コメントありがとうございます!
返信遅れてすみません…
Assets → Prefabsフォルダにあるbeamに貼り付けて下さい
ビームを飛ばすのクローンを生成するオブジェクトにスクリプトを張り付けるの所なんですが、やり方が解りません。
コメントありがとうございます!
返信遅れてすみません…
Assets → Prefabsフォルダにあるbeamにbeam.csを貼り付けて下さい