1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
using System.Collections; using System.Collections.Generic; using UnityEngine; using TMPro; //テキストを扱う際に必要 using UnityEngine.UI; //スライダーを扱う際に必要 public class BallScript : MonoBehaviour { private float power; //ボールのパワー Rigidbody rb; //リジッドボディ private int score; //スコア [SerializeField] TextMeshProUGUI scoreText; //スコアのテキスト [SerializeField] TextMeshProUGUI levelText; //レベルのテキスト [SerializeField] Slider slider; //スライダー [SerializeField] GameObject startButton; //スタートボタン [SerializeField] GameObject gameOverText; //ゲームオーバーのテキスト [SerializeField] GameObject paddle; //パドル void Start() { power = 5.0f; //初期値5 rb = GetComponent<Rigidbody>(); //リジッドボディを取得 } //ゲームスタート public void GameStart() { score = 0; //点数を初期化 rb.AddForce(transform.up * power, ForceMode.Impulse); //上に向けて力を加える levelText.text = "Level " + slider.value.ToString(); //レベルをテキスト表示 } void Update() { //スライダーでレベル切り替え if(slider.value == 1) power = 5.0f; else if(slider.value == 2) power = 8.0f; else power= 12.0f; } void OnCollisionEnter (Collision other) { //TopWallにぶつかったとき if(other.gameObject.name == "TopWall") { float randomDir = Random.Range(-power, power); //ランダム数値 rb.velocity = Vector3.zero; //ボールの速度をリセット rb.AddForce(randomDir, -power, 0, ForceMode.Impulse); //ランダムの角度ではね返す } //Paddleにぶつかったとき if(other.gameObject.name == "Paddle") { score++; //1ずつ増やす scoreText.text = score.ToString(); //スコアテキストを更新 } //BottomWallにぶつかったとき if(other.gameObject.name == "BottomWall") { gameOverText.SetActive(true); //ゲームオーバーテキスト表示 this.gameObject.SetActive(false); //ボールを消す paddle.gameObject.SetActive(false); //パドルを消す slider.gameObject.SetActive(true); //スライダー表示 startButton.gameObject.SetActive(true); //スタートボタン表示 } } } |