スイカゲームとは?
必要なもの
- 箱
- 雲
- フルーツ
- 動き
- 同じフルーツが重なるプログラム
- 得点
- 音
作ってみよう
箱
箱は、上と左右に四角形があればいけそうですね。
例えば、2Dオブジェクトのスクエアを3つ用意して、下記に設定。
Bottom:
Position: X = 0, Y = -4.7, Z = 10
Rotation: X = 0, Y = 0, Z = 0
Scale: X = 7, Y = 0.3, Z = 1
Left:
Position: X = -3.5, Y = -0.7, Z = 10
Rotation: X = 0, Y = 0, Z = 0
Scale: X = 0.3, Y = 8.3, Z = 1
Right:
Position: X = 3.5, Y = -0.7, Z = 10
Rotation: X = 0, Y = 0, Z = 0
Scale: X = 0.3, Y = 8.3, Z = 1
雲
雲は、2Dオブジェクトのキャプシュールを使ってみます。下記のように設定。
Cloud:
Position: X = 0, Y = 4.25, Z = 10
Rotation: X = 0, Y = 0, Z = 0
Scale: X = 1, Y = 0.3, Z = 1
上記のようになっていればOK。
ちょっと味気ないので、色をつけたり、画像にしたりすると良いかもしれません!
上の雲を動かすプログラム
MoveRightAndLeft.cs
public int speed = 10;
void Update()
{
if (Input.GetKey(KeyCode.RightArrow))
{
transform.Translate(speed * 1 * Time.deltaTime, 0, 0);
}
if (Input.GetKey(KeyCode.LeftArrow))
{
transform.Translate(speed * -1 * Time.deltaTime, 0, 0);
}
}
GetKey
は押されている間。
Time.deltaTime
は一回の動作にかかった秒数です。
果物の落下
コンポーネントを追加から Physics 2D
の Rigidbody 2D
を追加。
あと、箱と触る判定も入れたいので、Circle Collider 2D
も追加。
果物の出現
SpawnFruits.cs
public GameObject[] fruits;
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
Instantiate(fruits[Random.Range[0, 3], this.transform.position, this.transform.rotation);
}
}
GetKeyDown
は押された時。
あと何かある?
同じ果物同士がぶつかった時のスクリプト
FruitsCollide.cs
private void OnCollisionEnter2D(Collision2D collision)
{
if (this.gameObect.name == collision.gameObject.name)
{
Destory(this.gameObject);
collision.gameObject.GetComponent<FruitsCollide>().upgrade = null;
if (upgrade)
{
Instantiate(upgrade, this.transform.position, this.transform.rotation);
}
}
}
unityroom へ公開
▼資料