unityで、簡単な横スクロール型のアクションゲームを作ってみたいと思います。

右の方から上下の壁がやってきて、 スペースキーを押したら、プレイヤーがジャンプできるようになっています。 で、上手いこと、隙間を潜り抜けるとゲームは続行しますが 壁にぶつかってしまうと、こうですね。 自身が赤くなって、ゲームが留まってゲームオーバー という簡単な2Dゲームです。

【目次】

01:10 [1]オブジェクトの配置(プレイヤー、壁)
08:50 [2]プレハブ化(壁セット)
09:55 [3]スペースキーでジャンプ
16:45 [4]壁の移動
22:00 [5]壁を定期的に出す
31:10 [6]当たったら

コード

▼PlayerScript

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

public class PlayerScript : MonoBehaviour
{
    //1)Rigidbodyが扱える変数を用意
    private Rigidbody2D rb;

    // Start is called before the first frame update
    void Start()
    {
        //2)Rigidbodyを取得して代入
        rb = GetComponent<Rigidbody2D>();

    }

    // Update is called once per frame
    void Update()
    {
        //3)スペースキーを押したらジャンプ
        if (Input.GetKeyDown(KeyCode.Space))
        {
            //rb.velocity = new Vector2(0, 5f);
            rb.velocity = Vector2.up * 5f;
        }
    }

    //4)当たったら
    private void OnCollisionEnter2D(Collision2D collision)
    {
        Time.timeScale = 0;// ゲームを止める
        GetComponent<SpriteRenderer>().color = Color.red;
    }
}

▼WallScript

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

public class WallScript : MonoBehaviour
{

    // Update is called once per frame
    void Update()
    {
        //1)左に移動
        transform.position += Vector3.left * 2f * Time.deltaTime;

        //2)画面から出たら削除
        if(transform.position.x < -10f)
        {
            Destroy(gameObject);
        }

    }
}

▼GameManager

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

public class GameManager : MonoBehaviour
{
    //1)壁のプレハブ変数を定義
    public GameObject wallPrefab;

    // Start is called before the first frame update
    void Start()
    {
        //3)InvokeRepeating("実行する関数名", 開始時間, 間隔);
        InvokeRepeating("CreateWall", 1f, 2f);

    }

    //2)壁生成の関数
    void CreateWall()
    {
        // 位置を決める
        float randomY = Random.Range(-3f ,3f);
        Vector3 wallPos = new Vector3(5f, randomY, 0f);

        //ランダムな高さで壁生成
        //Instantiate(何を, 位置, 回転);
        Instantiate(wallPrefab, wallPos, Quaternion.identity);
    }

}

コメントを残す