【Unity】ゲーム制作はじめました。【超初心者】

感動した!ゲームエンジンって凄い!

きっかけの動画

【※注意】この動画を見たらゲームを作りたくなります!

【初心者向け】ゲーム制作してみたいけど躊躇してる方に始め方を解説します【ひろはす】

参考動画

ブロック崩しを題材にして、Unityの基本的な使い方を分かりやすく教えてくれる動画です。

【超初心者向け】ブロック崩しを作りながらUnityの基本的な使い方を解説します

作ったゲーム

物理演算をゲームエンジンが勝手にやってくれるので、とっても簡単!

たったこれだけですが、自分で作れたことに僕は感動。

時間も全然かかりません。

ブロック崩し

復習問題

「何も見なくてもブロック崩しをつくれるように、3回は練習すべき!」とのこと。

コードを理解するのが難しいので、復習用の問題集を作成

移動する

public float speed = 1.0f;

publicにすることで、変更が楽になる。

speedという変数に1.0fを代入しただけ。

変数は初めの文字を小文字。

関数、クラスは初めの文字をを大文字にする。

if (条件){命令}

{}は一行なれば省略可能。

Input.GetKey(KeyCode.キーの名前)

キーの名前の例

↑:UpArrow

↓:DownArrow

→:RightArrow

←:LeftArrow

this.transform.position.軸 > 数

軸の部分は、xyzのどれかを入れる。

どの軸に条件を与えるかで選ぶ。

‘>’は不等号。もちろん'<‘でも良い。

this.transform.position += Vector3.方向 * speed * Time.deltaTime;

方向の部分には、

x軸-方向:left、x軸+方向:right

y軸-方向:down、y軸+方向:up

z軸-方向:back、z軸+方向:forward

などを入れる。

public class Player : MonoBehaviour
{
    public float speed = 1.0f;

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKey(KeyCode.LeftArrow))
        {
            if (this.transform.position.x > -3)
                this.transform.position += Vector3.left * speed * Time.deltaTime;
        }
        if (Input.GetKey(KeyCode.RightArrow))
        {
            if (this.transform.position.x < 3)
                this.transform.position += Vector3.right * speed * Time.deltaTime;
        }
        if (Input.GetKey(KeyCode.UpArrow))
        { 
            if (this.transform.position.z < -5)
                this.transform.position += Vector3.forward * speed * Time.deltaTime;
        }
        if (Input.GetKey(KeyCode.DownArrow))
        {
            if (this.transform.position.z > -6.5 )
                this.transform.position += Vector3.back * speed * Time.deltaTime;
        }
    }
}

初速を与える

private Rigidbody リジッドボディ名;

たぶん、名前を付けているだけだと思う。なぜ必要なのかは理解できていない。

リジッドボディ名 = this.GetComponent<Rigidbody>();
リジッドボディ名.AddForce( 方向 * speed, ForceMode.VelocityChange);

GetComponentについて良く分からないのでリンクを貼っておきます。詳しくはこちらでどうぞ。とりあえず、初速や質量などを変更する前に書くものだと理解しておきます。

方向にはtransformとVector3のどちらを入れても大丈夫でした。

public class Ball : MonoBehaviour
{
    public float speed = 1.0f;
    private Rigidbody myRigid;

    // Start is called before the first frame update
    void Start()
    {
        myRigid = this.GetComponent<Rigidbody>();
        myRigid.AddForce((transform.forward + transform.right) * speed, ForceMode.VelocityChange);
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

衝突したら壊れる

private void OnCollisionEnter(Collision collision) { 命令; }

Destroy(this.gameObject);

public class Block : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
    private void OnCollisionEnter(Collision collision)
    {
        Destroy(this.gameObject);
    }
}

リザルト

獲得EXP:6

×
キシロ

ゲームクリエイターLv1

(つぎのレベルまで、あと94)

これから

しばらくは技術習得のためにブロック崩し師匠のお世話になります。

続きの動画も出ているので、次はそれを見て学びます。

コメント

タイトルとURLをコピーしました