【Unityの練習ゲーム作り 第一弾!】
ガラケーアプリでもヒットした、昔ながらの「糸通しゲーム」をUnityで作っています。
その1で 大まかな設計を考えました。今回は、糸と針を実際に動かしてみます。
こいつ・・・動くぞ!
重量に反発する針
はじめに針から。針をimageとして取り込み、Rigidbody 2DとCircle Colliderを追加。自由落下する針の完成。
スクリプトに針の動きを記述していきます。ボタンを押している間だけ、↑向きに力を加えます。
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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ItoController : MonoBehaviour { Rigidbody2D rigid2d; float antiGravity = 175.0f; // Use this for initialization void Start () { this.rigid2d = GetComponent<Rigidbody2D>(); } // Update is called once per frame void Update () { //Spaceが押されている間上昇する if(Input.GetKey(KeyCode.Space)){ //Debug.Log("押している"); this.rigid2d.AddForce(transform.up * this.antiGravity); } } } |
糸に作成したスクリプトをアタッチし、RigidbodyのMassとGravity Scaleをちょいちょい調整してやった結果が以下。あとはゲーム性を見ながら、数値を調整していきます。
ちなみに図中の赤いものは針を模したゲートです。糸通しゲームとは一体…
時間経過で動く針
針は時間経過で 画面右端から左端まで移動します。フレームごとに徐々に座標を変化させます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class HariController : MonoBehaviour { void Start () { } void Update () { //フレームごとに等速で移動 transform.Translate(-0.05f,0,0); //画面外に出たらオブジェクトを破壊する if(transform.position.x < -10.0f){ Debug.Log(transform.position.x); Destroy(gameObject); } } } |
針を生成する
続いて針を自動的に生成させます。糸が通過するゲートを上下に変動させるため、出現位置のy座標をランダムとしました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class HariGenerator : MonoBehaviour { public GameObject hariPrefab; float span = 3.0f; float delta = 0; void Update () { this.delta += Time.deltaTime; if(this.delta > this.span){ this.delta = 0; GameObject hariMove = Instantiate(hariPrefab) as GameObject; int py = Random.Range(-4,4); hariMove.transform.position = new Vector3(10, py, 0); } } } |
py
にランダムで数値が入り、y座標の出現位置が変わります。
動いた! pic.twitter.com/grZYDOhJYg
— Gukou (@Gukou4) 2018年9月3日
針をランダムな位置に出現させることができました。
ゲームの骨子は完成しました。次回は当たり判定を入れていきます。
その3に続く