山傘のプログラミング勉強日記

プログラミングに関する日記とどうでもよい雑記からなるブログです。

Unity2018入門 最新開発環境による簡単3D&2Dゲーム制作 その4

Chapter 4 2Dゲームを作ってみよう!

今回はスクリプトを記述していきます。

プレイヤーの移動

キー入力によってプレイヤーを移動させます。今回のゲームではプレイヤーは水平方向にしか動けません。なので水平方向に対応する"Horizontal"が入力されたかどうかの処理をUpdate()関数内に記述します。

 public float speed = 8f;
 public float moveableRange = 5.5f;

void Update () {
        transform.Translate(Input.GetAxisRaw(
            "Horizontal") * speed * Time.deltaTime, 0, 0);
        transform.position = new Vector2(Mathf.Clamp(
            transform.position.x, -moveableRange, moveableRange),
            transform.position.y);
    }

transform.Translate()でプレイヤの座標を変えています。また、プレイヤーが画面外に出ないようにMathf.Clamp()で移動可能なx座標を制限しています。

移動後の座標を調べているのが少し不思議に思いました。

大砲

大砲の玉をプレハブ化してスクリプトから呼び出します。

// 大砲の発射
    void Shot() {
        // Quaterion.identityでRotationを(0, 0, 0)とする。
        GameObject newBullet = Instantiate(cannonBall, spawnPoint.position,
            Quaternion.identity) as GameObject;
        newBullet.GetComponent<Rigidbody2D>().AddForce(Vector3.up * power);
    }

また、砲弾のプレハブに時間で消滅するようなスクリプトを付加しています。

public class DestroyObj : MonoBehaviour {

    public float deleteTime = 2.0f;
    // Use this for initialization
    void Start () {
        Destroy(gameObject, deleteTime);
    }
    
    // Update is called once per frame
    void Update () {
        
    }
}

動画

youtu.be

やったこと

  • 4-05: プレイヤーを操作できるようにしよう!

  • 4-06: 砲弾をうてるようにしよう!

感想

挫折しないという方針の下で作られた本なので分かりやすいですね。このままのペースで終わらせたいです。