感動した!ゲームエンジンって凄い!
きっかけの動画
【※注意】この動画を見たらゲームを作りたくなります!
参考動画
ブロック崩しを題材にして、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
月 | 火 | 水 | 木 | 金 | 土 | 日 |
〇 | × | 〇 | 〇 | 〇 | 〇 | 〇 |
これから
しばらくは技術習得のためにブロック崩し師匠のお世話になります。
続きの動画も出ているので、次はそれを見て学びます。
コメント