mona-game

ゲームプログラミング技術メモや、講座、仮想通貨など幅広く趣味のことを書いて行こうと思います

webブラウザゲームエンジンの検証~その1~前書き

Twitterで24時間でお題に沿ってゲームを作るイベントをみつけて、調べてみると面白そうだったので参加しようとおもったが忙しくてできなかった。

 

webブラウザーゲームじゃなくても、紙一枚で参加した人も過去にいるそうで、いろいろと敷居が低いイベントだが、やっぱりいろんな人にあそんでもらうには手軽に遊べるwebブラウザーゲームのほうがいいのかもしれない。

 

短期間で定期的にやってるみたいなので次回に向けて、webブラウザーゲームエンジンを実際にミニゲームをつくったり色々と試してみたいと思う。

 

ちなみにそのイベントとはこちら

あほげー | TOPページ

 

[Unity2D]「連打ゲームをつくろう!」その2

前回からの続きを作っていこう。
今回はC#スクリプトを書いていくが1行づつ読めばなにも難しいところはないはず!




[Unity2D]「連打ゲームをつくろう!」その1
mona-game-dev.hateblo.jp



 その2のもくじ

3.タッチ判定

 

それではまずはスクリプトを作ろう

projrctビューのAssetsで右クリック

[Create]>[C#Script]を選ぶ。
f:id:mona-game-dev:20180201165552j:plain
 

スクリプト名をTouchにしてダブルクリックで開こう

 

 
 

これを書いたら

Unityのほうに戻って

hierarchyビューのTextをクリック

inspectorビューの下のほうにあるAdd componentボタンをクリック

[Script]>[Touch]

を選ぶ。
f:id:mona-game-dev:20180201165708j:plain

プレビューしてみよう!

f:id:mona-game-dev:20180201165739j:plain
 

ちゃんとカウントできる!

 

4. タイマーを作る

using UnityEngine;
using System.Collections;

using UnityEngine.UI;

public class Touch : MonoBehaviour {
	// カウント用変数
	int Cnt;
	// 結果表示用変数
	int result;
	// タイマー用変数
	int timer;

	// フレーム毎に呼ばれる関数
	void Update() {
		// マウスがクリックされたら
		if (Input.GetMouseButtonDown(0))
		{
			// カウントを増やす
			Cnt++;
		}

		//カウントをTextコンポーネントへ 
		this.GetComponent<Text>().text = Cnt + "クリック";

		// もしtimerが500以上になったら
		if (timer > 500)
		{
			// カウントを0に戻す
			//カウントをTextコンポーネントへ 
			this.GetComponent<Text>().text = "結果は" + result + "クリックでした~";
		}
		else
		{
			result = Cnt;
		}
		// タイマーを増やす
		timer++;
	}
}

ちょー簡易的なタイマー。

とりあえず500以上になったら結果を表示してる。
f:id:mona-game-dev:20180201165830j:plain

これでとりあえず完成でいいかな。
タイマーを表示したりタイトル画面、リザルト画面作ったり色々改良してみてね。


                                                                                                                                        • -

この記事がもし少しでも役に立ったら投げ銭お願いします。

bitZeny:
Zz882aLZbEbKFcdR2DPVmASxso3PEfYktv

MonaCoin:
MCm1YDXSqzQPxK2EzXvgSiztkbMu7uy1dM

XP:
XY6fzoZkxAhobZMmyayu4UJJ2bt6ZTpqUH

bitCoin:
3EFyxTh5UfFTn2EenBGunjatNHjpgKAis7

YAJUCOIN:
YUD1Ju6iPst3paGVZHiabBLNrYA312XAVC

イーサ:
0xca5de1bB12BC5655628666fC4cA58ea52aA7eB51

 

[Unity2D]「連打ゲームをつくろう!」その1

Unity初めてなんか作ってみたい。

 

まずは簡単なものから、タッチ判定ぐらいでゲーム作ってみる。

フローはこんな感じかな。 

  1. プロジェクト作る
  2. 文字を描画
  3. タッチ判定
  4. タイマーをつくる

 

その1、その2に分けて作っていくよ

 

その1のもくじ

 

 

じゃ早速作っていこう!

 

1.プロジェクトを作る!f:id:mona-game-dev:20180201162924j:plain

プロジェクト名 : TouchGame

2D

Create Projectボタンクリック

これだけ

 

2.文字を描画!

uGUIを使ってTextオブジェクトを作る
位置を変える
フォントサイズを変える
文字の色を変えてみる
表示文字変えてみる
 

・uGUIを使ってTextオブジェクトを作る

 

Hierarchyビューを右クリック

 

[UI]>[Text]を選んで、できたオブジェクトのCanvasの中のTextをクリックして選ぶ。

 f:id:mona-game-dev:20180201163044j:plain

とりあえずInspectorビューの中のRectTransformコンポーネントの中を

 f:id:mona-game-dev:20180201163049j:plain

PosX   =  0

PosY   =  0

PosZ   =  0

 

にセットしてプレビューしてみる。

文字もうでた。

 

ー 位置を変える 

 

さっきいじった

InspectorビューのRectTransformの中の

PosX PosY PosZ  

 数値を変えるだけ。

Xが横Yが縦。

おわった。

 

ー フォントサイズを変える 

 

InspectorビューのTextコンポーネントの中の

FontSizeの数字をいじってみよう!

 

 

あれ、なんか変わるっちゃ変わるけど28ぐらいから表示されなくなった。

 

InspectorビューのRectTransformの中の

Width = 300

Height = 100 

 f:id:mona-game-dev:20180201163053j:plain

ぐらいにしたら表示されるようになった。

 

ー 文字の色を変えてみよう ー


同じくInspectorビューのTextコンポーネントの中の

Colorの海苔みたいなところをクリック好きな色に変えてみよう。

 f:id:mona-game-dev:20180201163102j:plain

できた。

 

ー 表示文字を変えてみよう ー

 

同じくInspectorビューのTextコンポーネントの中の

Textの四角の中のNew Textのところを変えてみよう。

 f:id:mona-game-dev:20180201163105j:plain

できた。

 

 その2からはスクリプト部分を組んで行くよ。

スクリプトっていっても十数行書くだけだけどね。

 

 

mona-game-dev.hateblo.jp

 

------------------------------------------------------------------
この記事がもし少しでも役に立ったら投げ銭お願いします。

bitZeny:
Zz882aLZbEbKFcdR2DPVmASxso3PEfYktv

MonaCoin:
MCm1YDXSqzQPxK2EzXvgSiztkbMu7uy1dM

XP:
XY6fzoZkxAhobZMmyayu4UJJ2bt6ZTpqUH

bitCoin:
3EFyxTh5UfFTn2EenBGunjatNHjpgKAis7

YAJUCOIN:
YUD1Ju6iPst3paGVZHiabBLNrYA312XAVC

イーサ:
0xca5de1bB12BC5655628666fC4cA58ea52aA7eB51

ゲームで使えるビットフラグ管理

もっといいやり方あったら教えてください!!!!

・宣言

#define F_BLANK 0b0000001	// 10進数:1
#define F_WALL  0b0000010	// 10進数:2
#define F_PLAYER 0b0000100	// 10進数:4
#define F_HASIGO 0b0001000	// 10進数:8
#define F_COIN  0b0010000	// 10進数:16

int flg = 0;

・フラグを立てる

🔴例

flg = flg | F_PLAYER

変数flgにもし 0b0001000 (F_HASIGO)が入っていた場合
0b0001000 [OR] 0b0000100 は 「0b0001100」 となってハシゴフラグとプレイヤーフラグを両方立てた状態になる。

❌例

flg = F_PLAYER ;

このようにしてしまうと、もともと立ってたハシゴフラグが消えてしまってプレイヤーフラグのみが立つことになってしまう。


・フラグを下ろす

🔴例

flg = flg & ~MS_PLAYER;

変数flgにもし 0b0001100 ハシゴフラグとプレイヤーフラグが立っていた場合
0b0001000 [AND] 0b0000100 は 「0b0001100」 となってハシゴフラグとプレイヤーフラグを両方立てた状態になる。

・フラグを抽出する

if ((flg & F_PLAYER) == F_PLAYER)
{
	printf("プレイヤーフラグが立ってます\n");
}

・サンプルプログラム

#include <stdio.h>

#define F_BLANK 0b0000001	// 10進数:1
#define F_WALL  0b0000010	// 10進数:2
#define F_PLAYER 0b0000100	// 10進数:4
#define F_HASIGO 0b0001000	// 10進数:8
#define F_COIN  0b0010000	// 10進数:16

void main()
{
	int flg = 0;
	
	// プレイヤーフラグを立てる
	flg = flg | F_PLAYER;

	// ハシゴフラグを立てる
	flg = flg | F_HASIGO;

	// プレイヤーフラグを下げる
	flg = flg & ~F_PLAYER;

	if ((flg & F_PLAYER) == F_PLAYER)
	{
		printf("プレイヤーフラグが立ってます\n");
	}
	else
	{
		printf("プレイヤーフラグが下がってます\n");
	}

	getchar();

}

ステップ実行しならがらflgの値を追ってみましょう。

・マクロを定義する

#define M_FLAG_ON(flg,b) (flg | b)
#define M_FLAG_OFF(flg,b) (flg & ~b)
#define M_FLAG_CHECK(flg,b) (flg & b)

マクロを定義しておくとソースがすっきりして可読性があがります。


・マクロを使ったサンプルプログラム

#include <stdio.h>

#define F_BLANK 0b0000001	// 10進数:1
#define F_WALL  0b0000010	// 10進数:2
#define F_PLAYER 0b0000100	// 10進数:4
#define F_HASIGO 0b0001000	// 10進数:8
#define F_COIN  0b0010000	// 10進数:16

#define M_FLAG_ON(flg,b) (flg | b)
#define M_FLAG_OFF(flg,b) (flg & ~b)
#define M_FLAG_CHECK(flg,b) (flg & b)

void main()
{
	int flg = 0;
	
	// プレイヤーフラグを立てる
	flg = M_FLAG_ON(flg , F_PLAYER);

	// ハシゴフラグを立てる
	flg = M_FLAG_ON(flg , F_HASIGO);

	// プレイヤーフラグを下げる
	flg = M_FLAG_OFF(flg ,F_PLAYER);

	// プレイヤーフラグを抽出して比較
	if (M_FLAG_ON(flg,F_PLAYER) == F_PLAYER)
	{
		printf("プレイヤーフラグが立ってます\n");
	}
	else
	{
		printf("プレイヤーフラグが下がってます\n");
	}

	getchar();

}||<

------------------------------------------------------------------ 
この記事がもし少しでも役に立ったら投げ銭お願いします。

<b>bitZeny:</b>
Zz882aLZbEbKFcdR2DPVmASxso3PEfYktv

<b>MonaCoin:</b>
MCm1YDXSqzQPxK2EzXvgSiztkbMu7uy1dM

<b>XP:</b>
XY6fzoZkxAhobZMmyayu4UJJ2bt6ZTpqUH

<b>bitCoin:</b>
3EFyxTh5UfFTn2EenBGunjatNHjpgKAis7

<b>YAJUCOIN:</b>
YUD1Ju6iPst3paGVZHiabBLNrYA312XAVC

<b>イーサ:</b>