(Unity初心者向け)ブロック崩しの作り方 #3 ラケットを動かす
では、早速やっていきます。
前回でボールに動きをつけました。
では、ラケットにも動きをつけていきます。
ラケットがゲームをしている人の入力にしたがって動くように命令する
スクリプトを書きます。
今回はPCの左右の矢印キーを使いたいと思います。
では、スクリプトを用意します。
いつも通り
Projectウィンドの中で、
右クリック > Create > C#script を選択します。
スクリプト名は Racket にします。
では早速記述していきます。
右矢印を押したら、右にラケットが動く
左矢印を押したら、左にラケットが動く
これらの処理を if構文を使っていきます。
・if構文を簡単に説明すると
if(条件){ 処理の中身 }
になっています。
今回は
if(右のキーを押したら){ラケットは右に動く}
ということになります。
これをコードにすると以下のようになります。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Racket : MonoBehaviour
{
// Update is called once per frame
void Update()
{
//右のキーを入力すると右にracketが動く
if (Input.GetKey(KeyCode.RightArrow))
{
this.transform.Translate(0.5f,0f,0f);
}
//左にキーを入力すると左にracketが動く
if (Input.GetKey(KeyCode.LeftArrow))
{
this.transform.Translate(-0.5f,0f,0f);
}
}
}
今回はupdateの中に処理を書きます。
なぜなら、前回説明したとおり
updateは毎フレーム呼ばれる処理なので、
入力に対して、何度のリアルタイムで反応する必要があるからです。
処理の中身ですが、
transformはオブジェクトの座標(配置)のことを指します。
一つ一つ分解して、理解していくと
このオブジェクトのtransform(座標)をTranslate(変換します)
(x座標について、y座標について、z座標について)
というふうに理解できます。
よって、この処理の意味は
this.transform.Translate( 0.5f, 0f, 0f);
現在地点よりx座標を0.5プラスするということになります。
左も同様にして理解できます。
スクリプトを保存して、ラケットにドラッグ&ドロップで貼り付けます。
では、実際にゲームを実行してみましょう。
実はラケットがどこまで、左右に動いてしまいます。
動く範囲を制限する必要があります。
スクリプトを修正します。
今回は、Racketの座標を取得して、その座標が壁の中にあるときにだけ動くようにします。
if (右矢印を押す)
{
if(ラケットが壁の中にある)
{ラケットを動かす処理}
}
構造はこのような感じにしていきたいと思います。
では、記述します。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Racket : MonoBehaviour
{
// Update is called once per frame
void Update()
{
//Racketの座標を取得する
Transform BarTrans = GameObject.Find("Racket").transform;
Vector3 pos = BarTrans.position;
//右のキーを入力すると右にracketが動く
if (Input.GetKey(KeyCode.RightArrow))
{
//Racketの座標が20以下(壁より内側)である場合には移動を実施します。
if (pos.x < 20)
{
this.transform.Translate(0.5f, 0f, 0f);
}
}
//左にキーを入力すると左にracketが動く
if (Input.GetKey(KeyCode.LeftArrow))
{
//Racketの座標が-20以上(壁より内側)である場合には移動を実施します。
if (pos.x >-20)
{
this.transform.Translate(-0.5f, 0f, 0f);
}
}
}
}
20という座標については、本来ならゲームを実行しながら調整する値です。
考え方としては
・右の壁はx=26にあること
・ラケットの大きさは10であること
これらを考慮して、26だと確実に壁を越えるから、26よりは小さいはず
というような感じでゲームを実行しながら調整します。
とりあえずこれでラケットに動きを作ることができました。
次回は、
ブロックを設置して、ボールに当たったら消えるようにしていきます。
次で一応完成になります。