見出し画像

【知識0から始めるプログラミングC#】#4「Chapter4&5」:使用教本『スラスラ読める Unity C#ふりがなプログラミング』

本noteはプログラミング知識0の文系大学生が『スラスラ読める Unity C#ふりがなプログラミング』で学習した学習記録を書いたものです。
 これから『スラスラ読める Unity C#ふりがなプログラミング』を使って学習する人が学習を進めていく中で同じ問題にぶつかったときに、参考にしてもらえれば嬉しいと思い作成しています。
 できるだけ精確なnoteになるように努めますが、まだまだプログラミングに関しては初心者ですので、間違いがあるかもしれないです。ご了承ください。(Twitterなどでご指摘いただけますと幸いです。)
 Twitterでプログラミングに関することを日々つぶやいていますので是非フォローお願いします。(TwitterID:@alephNo)

(前回)【知識0から始めるプログラミングC#】#3「Chapter2&3」

⑤Chapter4

【ここからUnityを使ってゲームを作り始めます】

Chapter4から実際にUnityにオブジェクトを配置して、ゲームを作り始める工程に入ります。

大切なことは、一気に進めないで、テキストを進めていく中で1回1回プログラムを書き加えたタイミングで正しく動くか確認するということ。

書き加えたプログラムの意味などは正しく動いた後に確認すると分かりやすいので、まずは精度よくテキストのコードを写していくことが大切と言えます。

「Visual studioの自動で変換されてしまう機能に注意。」

ここからさらに様々な種類のプログラムを書いていきますが、Visual studioの自動変換の機能が邪魔になることがあります。

例えば「x」と打ちたいところ

画像1

「x」の自動変換として別の長いコードが示され....

画像2

こんな感じで勝手に変換されることがあります。
自分が書きたい長いコードを変換してくれる時は助かるのですが、それ以外の時は意外とこの自動変換に悩まされます。

そういう時は目的のコードを打った後「Esc」キーを押すと、自動変換のウィンドウが消えます。

自分が正しく打ったつもりでも、この自動変換で違う文字列になってしまっていることがあるので注意が必要です。

「改めてUnityの画面の意味を考える」

画像3

改めてUnityの画面の意味について考えます。

テキストを進めていると、指示通りに進んでいるだけになってしまい、俯瞰してどういった操作を行っているのかが分からなくなることがあります。

とくに、どこに何を加えているのか?というのが作業をしていると分からなくなってきます。(テキストの指示が難しいのではなく操作の意味が掴みにくい)

なのでここで一度画面の意味を復習しておきましょう。

まず[Hierarchy]ウィンドウ

画像4

これはメインウィンドウの[Scene]に出ているオブジェクトの情報になります。

画像5

下にある[Project]ウィンドウは使っている素材が追加されていく部分です。

画像6

全体のイメージとしては
①メイン画面にあるオブジェクトの情報が[Hierarchy]ウィンドウに表示されています。
②[Hierarchy]にあるオブジェクトはプログラムに従って、プレイを押すと動き始めます。
③何か素材の呼び出しの命令があった場合は[Project]にある素材を適宜参照して使います。

という形になっています。
これを意識すると、テキストでそれぞれの場所にオブジェクトや素材を追加する意図が分かりやすくなると思います。

⑥Chapter5

【ゲームの完成】

いよいよ最後のChapterです。

やはりここでも大切なのはプログラムを書き加えたタイミングで正しく動くか確認するということ。

そして、どうしても詰まってしまったら一度Saveしてもう一度[新規作成]で0から組みなおすというのもアリです。

「余計な操作をしない」「正しいプログラミングを書く」「正しい場所に素材を配置する」
を徹底すれば完成できるはずです。

⑦Chapter5+α

ゲーム完成した皆さんおめでとうございます!

とりあえず、ここでひと段落ですね。

自分が書いたプログラムで初めてゲームが動いた感動はいまでも忘れられません。皆さんも同じような体験をしていると思うと書いている自分も嬉しく思います。(ぜひ完成しましたらnoteに♡お願いします。)

成功2

ただ、テキストの通りにやって完成させて感じたのは
「shooter速ぇぇぇ!!wallの回転速すぎ(笑)」
ということです。

なのでそのスピードを調整できるようなコードを書き加えていきましょう。

オリジナルでコードを追記していきたいと思います。
(テキストで習ったことの範囲でやります。)

目標は『[Insepter]ウィンドウで数値を直接入力でき、「Shooter」と「Wall」のスピードを色々な数値に変化させて試せるようにする』です。

追加1

具体的には↑のように、対応するスクリプトの部分に「speed」というボックスを作って、数値を直接入力できるようにします。

⑦-1 壁の回転スピードを変更できるようにする

まずはwallの回転スピードを変更できるようにします。

Wallの回転スピードはスクリプト「Wall」に記述しましたね!

[Project]ウィンドウからWallの素材をクリックし、その中のWallのスクリプトを変更します。

追加2

using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Security.Cryptography;
using UnityEngine;

public class Wall : MonoBehaviour
{
   public int speed; //追加する
   public bool clockwise = true;
   void Update()
   {
       if (clockwise)
       {
           transform.Rotate(new Vector3(0, 0,-speed)); //変更する

       }
       else
       {
           transform.Rotate(new Vector3(0, 0, speed)); //変更する
       }
       
   }
}

まず追加するのは、テキストChapter1-10『データの入力を受け付ける』でやったパブリック変数です。

速度の情報は整数なので今回はint型を使います。
変数名は「speed」にしておきましょう。(//追加する の部分)

speedの情報を今まで回転速度を指定していたnew Vector3以下の「-5」,「5」の部分に入れていきます。(//変更する の部分)

列ごとに回転の向きが違うので、片方はマイナスの符号をつけておきましょう。

保存をして、UnityにもどるとWallスクリプトの部分にspeedという枠が表示されているはずです。(表示されていない場合は適当な場所をクリックしたりすると表示されることがあります。)

追加1

あとは、Speedに好きな数値を入れて試してみましょう。

ちなみに「0」を入れると壁は停止します。

⑦-2 シューターのスピードを変更できるようにする

次にシューターの移動速度を変更できるようにします。

追加5

メインの[Sence]ウィンドウか[Hierarchy]ウィンドウからShooterオブジェクトを指定して、その中のShooterスクリプトを変更します。

追加6

シューターの左右の移動速度を指定している数値はこの部分なので、そこをパブリック変数で変更できるようにします。

今回はfloat(フロート)の型を使います。

using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Security.Cryptography;
using UnityEngine;

public class Shooter : MonoBehaviour
{
   public float speed; //追加する
   float move = 0.05f;
   public GameObject[] prefabs = new GameObject[4];
   int curvege = 0;

   void Update()
   {
       Vector3 pos = transform.position;
       pos.x += move;
       if (pos.x < -2.5f)
       {
           move = speed; //変更する
       }
       if (pos.x > 2.5f)
       {
           move = -speed; //変更する
       }
       transform.position = pos;
       if (Input.GetMouseButtonUp(0))
       {
           Instantiate(prefabs[curvege], pos, Quaternion.identity);
           curvege++;
           curvege %= 4;
       }
   }
}

回転する壁と同様に、パブリック変数を追加して、変化させたい部分を変数に置き換えます。

これでスクリプトにspeedという枠が生成されます。

追加7

あとは好きな数値を入れて遊んでみましょう!
個人的には0.01ぐらいが丁度いいかなと思いました。

まとめ

⑤Chapter4
・プログラムを書き加えたタイミングで正しく動くか確認する
・Visual studioの自動で変換されてしまう機能は「Esc」キーでキャンセル

⑥Chapter5
・「余計な操作をしない」「正しいプログラミングを書く」「正しい場所に素材を配置する」でとりあえず完成を目指せ!

⑦Chapter5+α
・「Shooter」と「壁」の速度をパブリック変数を上手く使えば簡単に変更できるようになる。


ここまでご覧いただきありがとうございます。
まだまだ私自身も初学者なので、手探りでnoteを執筆しました。
ただ、どんなことも「初心忘るべからず」だと思っています。
機会があるごとに思い出して加筆・訂正できればと思います。

みなさまと、プログラムの世界をこれから歩めることを楽しみにしています。

この記事が気に入ったらサポートをしてみませんか?