Fuwafuwa's memorandum

Fuwafuwa's memorandum

Data analysis, development, reading, daily feeling.
MENU

Unity: スマホ2Dゲームを作成する その3

下記の続き。
http://hibari1121.blog.fc2.com/blog-entry-135.html

前回はたいやきを落下させてお皿で受け止めるところまでやった。
今回はたいやきを1秒に1つ発生させる。

ヒエラルキービュー上のtaiyakiをプロジェクトビュー上にドラッグ&ドロップ。
taiyakiPと命名する。
ヒエラルキービュー上のtaiyakiは右クリックでdelete

プロジェクトビューを右クリックしCreate→C# Script

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class taiyakiGenerator : MonoBehaviour {

	public GameObject taiyakiP;

	// Use this for initialization
	void Start () {
		InvokeRepeating ("Generate", 1, 1);
	}

	void Update() {
	}
	
	void Generate () {
		Instantiate (taiyakiP, new Vector3 (-2.5f + 5 * Random.value, 6, 0), Quaternion.identity);
	}
}

ヒエラルキービューを右クリック→CreateEmpty
先ほど作成したtaiyakiGeneratorをCreateEmptyで作成したGameObjectにアタッチさせる。
この状態で実行すると1秒間に1つたいやきが画面上で発生し落下する。

ちなみにこのままだとたいやきと矢印が衝突してしまうため
左右の矢印のCapsule Collider 2DのIs Triggerにチェックをつける。
そうするとたいやきには接触しなくなる。

Unity: スマホ2Dゲームを作成する その2

下記の続き。
http://hibari1121.blog.fc2.com/blog-entry-134.html

前回はおさらを表示して矢印をタップすることでおさらを動かした。
今回はたいやきを落としてお皿でキャッチする。

おさらを選択してInspectorからAdd Component
Physics2D→BoxCollider2D
おさらのBoxCollider2Dのサイズを下記に設定。
x: 2.8 y: 0.3
Edit ColliderをクリックするとOffsetが設定できる。下記に設定。
x: 0 y: -0.3
osarac.png

次にたいやきを画面に設置する。
実行してもたいやきは宙に浮いたままなので、重力を設定する。
たいやきを設定しInspectorからAdd Component
Physics2D→Rigidbody2D
この状態で実行するとたいやきが落ちてくる。

しかし衝突を設定していないのでおさらをすり抜けてしまう。
Colliderを設定する。
たいやきを選択しAddComponent
Physics2D→Box Collider 2D
Box Collider 2Dを下記のサイズに設定する。
x: 1.5 y: 0.8
taiyakic.png

実行するとたいやきが落下しお皿に落ちることが確認できる。
rakkagamen.png
ばんざい

Unity: スマホ2Dゲームを作成する その1

落ちてくるたい焼きをおさらでキャッチする2Dゲームを作成する。
おさらは画面左右にある矢印で動かすことが可能なものとする。

Unity画面のレイアウトをTallに変更(好みで良い)。
tall.png
Game画面のScreenSizeをスマホのサイズ9:16(or 16:9)に変更する。
screensize.png
Assetに画像をドラッグ&ドロップ。
Assetの画像をSceneにドラッグ&ドロップで任意の場所に設置する。
gamen.png

矢印にColliderを設定する。
矢印を選択しInspectorからAddComponent。
addCom.png
Physics2D→Capsule Collider 2D選択。

次に矢印とお皿にそれぞれタグをつける。
それぞれのオブジェクトを選択しInspectorでタグをaddする。
(ここではお皿はPlayerとする)
tag.png

次に矢印をクリックした時のイベントを指定する。
Assets内を右クリック→Create→Script C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Controller : MonoBehaviour {


	private bool isClick = false;

	// Use this for initialization
	void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
		if (Input.GetMouseButtonDown(0)) {
			OnMouseDown();
			if(isClick){
				isClick = false;
			} else {
				isClick = true;
			}
		}
			if (Input.GetMouseButton(0)) {
			}
			if (Input.GetMouseButtonUp(0)) {
			}
		}

	void OnMouseDown(){
		Vector3 aTapPoint = Camera.main.ScreenToWorldPoint (Input.mousePosition);
		Collider2D aCollider2d = Physics2D.OverlapPoint (aTapPoint);
		if (aCollider2d) {		
			var osara = GameObject.FindWithTag ("Player");
			GameObject obj = aCollider2d.transform.gameObject;
			if (obj.name == "migi") {
				osara.transform.Translate (0.1f, 0, 0);
			} else if (obj.name == "hidari") {
				osara.transform.Translate (-0.1f, 0, 0);
			}
		}
	}
}
右矢印をタップするとお皿が右に、左矢印をタップするとお皿が左に動くようになる。
osaragamen.png

このカテゴリーに該当する記事はありません。