【初心者向け】Unityで3Dシューティングを作るチュートリアル

今回作るゲームは画像のような3Dシューティングゲームです

1.png

ス○ーフォッ○スみたいですねw

まずはこちらのUnityパッケージをダウンロードして下さい

パッケージを入れる方法はこちら

目次

プレイヤーの移動

この手のシューティングゲームは

①主人公が自動で前に進むようにする
②WASDキーで上下左右に動くようにする
③キーを押した方向に機体が傾くようにする
④クリックされたら、弾のクローンを生成する
⑤弾を生成したら前方に飛ぶ

これが基本です。ではいきましょう♪
今回もScratchだとどんなブロックにするのか、参考にしながら考えていく形式を取ります

C#の基本的なルールと構造の説明

C#にはいくつかルールがあります。

①スクリプトを作成した時につけた名前と、スクリプトの名前は一致させる
②何をどこに入力するのかエリアを理解する
③エリアとエリアは{}でとじる
④行の最後は;をつける

以上の点をしっかりおさえておきましょう!
今回は特に
「ゲーム開始中、繰り返し実行されるエリア」
にコードを入力していきますので、そこに注目して下さい

それでは、画像を参考にC#スクリプトを作ります

31.png

真ん中らへんのAssetsを右クリック、Createにカーソルを合わせて、C# Scriptをおします

4.png

画像のようにスクリプトの名前をPlayerと入力しましょう

入力したらダブルクリックしてスクリプトを入力する画面を開きます

主人公が自動で前に進むようにする

これをScratchで表すと、以下の画像のようになります

13.png

見ての通り「ずっと」にはさまれているので、画像の部分に入力します

入力するコードはこちらの表にあるので探してみましょう

このブロックはどんなコードを入力するのか、表から探しましょう

今回は

transform.position += transform.TransformDirection(Vector3.forward * 10);

となります

32

入力したら画像のようにスクリプトをPlayerにD&Dしましょう

正解はこちら
18.png
5.png

この状態でテストプレイしてみると…

このままだと、早すぎるのでスピードを自由に調整できるようにします
Speedという変数を作り、10と入力したところに代入します

Speedという変数を作る

変数よく分からんって人はこちらを見て下さい

変数とは?

数字に名前をつけて役割を与えたもの
例えば、身の回りだと時間とか気温とか、ゲームだと体力とかが変数になります
プログラミングでは、体力を表す数字をHPという変数だということにして、HPを減らしたり増やしたりすれば、ダメージを受けたり回復したりできるというわけです
#C#での変数の作り方はこちらを参考にして下さい
図1.png
スライド1.PNG
スライド2.PNG
①図を参考にして変数を入力していきます。

②変数はアクセス修飾子 型 変数名;と入力します。
アクセス修飾子については以下を参考にして下さい。

型については以下を参考にして下さい。

例えば他のオブジェクトでも使用可能なfloat型のgetabakoという変数を作る場合
public float getabako; と入力します。

今回は

public float Speed;

と入力します

6.png

publicにすることでエディタ上で編集できるようになり、
floatとすることで、小数単位の数字が入力できるようになります

そして数字の部分にSpeedと入力しておくと、エディタ上で入力した数字が反映されます
0.6~0.8くらいにしておきましょう

これをScratchで表すと、以下の画像のようになっていて、

現在スクリプトは以下のようになっています

17.png

WASDキーで上下左右に動くようにする

これをScratchで表すと、以下の画像のようになります(これより以前の部分も含めています)

1つ目のもしWキーが押されたならy座標を10ずつ変える」は

1つずつ表を見ていくと、

①もし~ならは、

if()
{

}

と表します

②Wキーが押されたならは、条件です

Input.GetKey(KeyCode.W))

と表します
これをそのままifのあとの()の中に入力します

③y座標を10ずつ変えるは、実行する内容です

transform.position += new Vector3 (0, 10, 0);

と表します
これをそのまま{}の中に入力します

12-1.png

まとめると以下の図のようになります

全部合わせると、

if(Input.GetKey(KeyCode.W)))
{
    transform.position += new Vector3 (0, 10, 0);
}

となります
数字はここも10では大きいので小数がオススメです
小数にする際にはfを忘れずに

正解はこちら♪
19.png

他のIf文も同じ要領で打っていきましょう

正解はこちら♪
9.png

キーを押した方向に機体が傾くようにする

これをScratchで表すと、以下の画像のようになります(これより以前の部分も含めています)

それぞれのif文の中に入力していきましょう
○度に向けるは

transform.rotation = Quaternion.Euler(0, 90, 0);

と書きます

正解はこちら♪
11.png

ビームのクローンを生成する

これをScratchで表すと、以下の画像のようになります(これより以前の部分も含めています)

クローンを生成される場合、表の注意事項をよく読んで生成された時の回転をプレイヤーと同じ回転にしましょう
①publicのGameObject型のbeamという変数を作る
②生成されたクローンをプレイヤーと同じ回転にする
という点に気をつけて下さい
クローンの生成は

Instantiate(クローン生成するもの.gameObject, クローンを作成する場所, クローンの向き);

と書きます
今回の場合は

Instantiate(beam.gameObject, this.transform.position, Quaternion.identity);

となります

正解はこちら♪
21.png
22.png

※publicのGameObject型で変数を作った場合、どのオブジェクトなのか、スクリプトにドラッグ&ドロップで指定することができます
画像を参考にやってみて下さい

ビームを飛ばす

Assets → Prefabsフォルダにあるbeamに貼り付けて下さい
まずはプレイヤーと同様にbeamというスクリプトを作りましょう
今回は分からなくなったら正解と照らし合わせながらやってみて下さい

ビームの挙動ですが、

①向いている方向に真っ直ぐ飛んでいく
②数秒たったら消える
③敵に当たったら消える

という、よくある感じにしていこうと思います

これをScratchで表すと、以下の画像のようになります

24.png

1つ目の隠すのところが変な感じになっていますが、Unityだと○秒後に隠すということができるので、
そのようになっています
あと、衝突判定は2種類ありますが、今回は画像の方を使って下さい
getabakoの部分には敵のタグであるEnemyをつけます

25.png

また、衝突判定のスクリプトは画像の場所に入力しましょう

こちらは3点注意事項があります

①コライダー(衝突判定)のisTriggerにチェックをつける
②衝突するもののどちらかにはRigidBody(重力判定)をつける
③衝突される方にはスクリプトで記述されているタグ(今回の場合はEnemy)をつける

今回はあらかじめ設定してありますが、自分でやる場合には注意事項をよく読んで下さい

正解はこちら♪
26.png

追加ミッション

敵を爆発させて倒せるようにしよう

これをScratchで表すと、以下の画像のようになります

ヒント

①Enemyスクリプトを作成し、敵に貼り付けます
②ビームのタグはbeamです
③爆発のクローンを生成するにはpublicでGameObject型の変数を作る必要があります
④爆発のエフェクトはAssets → Prefabsフォルダの中にあります
正解はこちら♪
28.png

敵やステージに触れたらプレイヤーがダメージを受けるようにしよう

これをScratchで表すと、以下の画像のようになります

ヒント

①Playerスクリプトに追記します
②敵のタグはEnemy、ステージのタグはStageです
③爆発のクローンを生成するにはpublicでGameObject型の変数を作る必要があります
④爆発のエフェクトはAssets → Prefabsフォルダの中にあります
正解はこちら♪縦に長くなってきたので追記部分のみ
30.png

テストプレイをしてみると…

お疲れ様でした♪

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメント一覧 (5件)

getabako へ返信する コメントをキャンセル

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次