前回の続き。
今までは全オブジェクトの初期化をStart関数で実施していたため、ゲーム画面に遷移したらすぐにボールが出て始まっていました。
ただ、いきなり始まるのも何なので、特定のキーを押したらボールが出るようにします。
[BreakBlocksGame.cs]
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BreakBlocksGame : MonoBehaviour
{
public GameObject playerPrefab;
public GameObject gameBoardPrefab;
public GameObject ballPrefab;
public GameObject block1Prefab;
public GameObject block2Prefab;
public int level = 1;
void Start()
{
GameObject gameBoard = GameObject.Instantiate(gameBoardPrefab);
GameObject player = GameObject.Instantiate(playerPrefab);
player.transform.position = new Vector3(0, 3, -40);
ArrangeBlocks();
}
void Update()
{
if (Input.GetKey(KeyCode.Space))
{
GameObject ball = GameObject.Instantiate(ballPrefab);
ball.transform.position = new Vector3(30, 2, -10);
}
}
}
Spaceキーを押したら、ボールが出るようにしてみました。
ということで、
よし、さっそくテスト!
ブロック崩し テスト6
Spaceをちょっと押したら、球が大噴射。
そらこうなりますわな(笑)
Update関数はフレーム単位で呼ばれる関数。
ボールを1つに制限するような制御を何もしていないから、当然えらいことになりますわ。
ボールオブジェクトの生成を制御するフラグと判定処理を追加。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BreakBlocksGame : MonoBehaviour
{
public GameObject playerPrefab;
public GameObject gameBoardPrefab;
public GameObject ballPrefab;
public GameObject block1Prefab;
public GameObject block2Prefab;
public int level = 1;
private bool ballExistFlag = false;
void Update()
{
if (Input.GetKey(KeyCode.Space))
{
if (!ballExistFlag){
GameObject ball = GameObject.Instantiate(ballPrefab);
ball.transform.position = new Vector3(30, 2, -10);
ballExistFlag = true;
}
}
}
}
ブロック崩し テスト7
続きます。
coublood.hatenablog.com