ブログ

Unityでプログラミングを学んでみよう!

Unityでプログラミングを学んでみませんか?

Unityの素晴らしいところは、学校で学ぶ「算数」「数学」「理科」「物理」「プログラミング」を簡単に結び付けられる点。

そして、その結びつきを使って「面白いもの=ゲーム」を作れる点にあります。

 

1)「速さ」と「掛け算」をプログラミングする

例えば、自動で回転するコインをUnityでプログラムするとこんな感じになります。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Coin : MonoBehaviour
{
    private float speed;

    void Update()
    {
        // スピードは1
        speed = 1;

        transform.Rotate(new Vector3(0, 0, 90) * Time.deltaTime * speed);
    }
}

 

このプログラムを実行してみましょう。

コインが自動でゆっくり回転しています。

では、このコインの「回転スピード」を「10倍」にしてみましょう!

コード(プログラム)をどのように書き換えればいいでしょうか?

ここで使う知識が「掛け算」です。

スピードを10倍にするというのは、

すなわち、「スピード × 10」ということ。

これをコードに直すとこんな感じになります。

ちなみに、プログラミングの世界では掛け算の記号は「*」を使います。

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Coin : MonoBehaviour
{
    private float speed;

    void Update()
    {
        // スピードは1
        speed = 1;

        // 「* 10」は10倍の意味
        transform.Rotate(new Vector3(0, 0, 90) * Time.deltaTime * speed * 10);
    }
}
 

 

再びプログラムを実行してみましょう。

すると、はじめよりも回転スピードが上がっているのを確認できます。

 

こんな風に、学校で学ぶ「掛け算」はプログラミングの中で活用されています。

そして、Unityを使うとそれを視覚的に確認することができます。

 

2)「時間間隔」を「割り算」でプログラミングする

次は、「割り算」を使ってみましょう!

今、戦車が一定の「時間間隔」で砲弾を発射しています。

コードはこんな感じ。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ShotShell : MonoBehaviour
{
    public GameObject shellPrefab;
    public AudioClip sound;
    private int count;

    void Update()
    {
        count += 1;

        if (count % 60 == 0)
        {
            GameObject shell = Instantiate(shellPrefab, transform.position, Quaternion.identity);
            Rigidbody shellRb = shell.GetComponent<Rigidbody>();
            shellRb.AddForce(transform.forward * 500);
            AudioSource.PlayClipAtPoint(sound, transform.position);
        }
    }
}

 

では、この発射間隔=時間間隔を「短く」してみましょう。

どうすればいいでしょうか?

この時、使うのが「割り算」です。

その中でも今回は「あまり算」を使ってみます。

「7 ÷ 5 = 1 あまり 2」というやつです。

プログラミングの世界では、「あまり算」は「%」の記号を使って表現します。

上記のコードの中に

if (count % 60 == 0)

という一行があります。

ここは、「もしも『60』で『割った』『あまり』が『0と等しい』ときは・・・・」という意味。

もっとわかりやすくいえば、『60で割り切れる時・・・・』という意味です。

 

60で割り切れる数字は、

60、120,180,240、300・・・・ なので、

要するに、60という「間隔」で砲弾を発射しているというわけです。

 

ならば、10で割ったらどうでしょうか?

10で割り切れる数字は。

10、20,30,40、50・・・・ なので、

60で割った時よりも、格段に「間隔」が「短く」なるはずです。

 

では、実際にコードを10に書き直して実行してみましょう。

 

砲弾の発射間隔が格段に短くなりました。

こんな風に「割り算」「プログラミング」の中で活用されているのです。

上記の戦車ゲームは、レギュラー講座で子供達が作るものになります。

実際には、もっともっと色々なアイデアを子供達はプログラミングで実現していきます。

なぜなら、アイデアを形にできることはこの上なく面白いから。

楽しみながら学べる。

それがUnityを使ったプログラミングの醍醐味です。