[Unity2D]「連打ゲームをつくろう!」その2
前回からの続きを作っていこう。
今回はC#でスクリプトを書いていくが1行づつ読めばなにも難しいところはないはず!
[Unity2D]「連打ゲームをつくろう!」その1
mona-game-dev.hateblo.jp
その2のもくじ
3.タッチ判定
それではまずはスクリプトを作ろう
projrctビューのAssetsで右クリック
[Create]>[C#Script]を選ぶ。
スクリプト名をTouchにしてダブルクリックで開こう
これを書いたら
Unityのほうに戻って
hierarchyビューのTextをクリック
inspectorビューの下のほうにあるAdd componentボタンをクリック
[Script]>[Touch]
を選ぶ。
プレビューしてみよう!
ちゃんとカウントできる!
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以上になったら結果を表示してる。
これでとりあえず完成でいいかな。
タイマーを表示したりタイトル画面、リザルト画面作ったり色々改良してみてね。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
この記事がもし少しでも役に立ったら投げ銭お願いします。
bitZeny:
Zz882aLZbEbKFcdR2DPVmASxso3PEfYktv
MonaCoin:
MCm1YDXSqzQPxK2EzXvgSiztkbMu7uy1dM
XP:
XY6fzoZkxAhobZMmyayu4UJJ2bt6ZTpqUH
bitCoin:
3EFyxTh5UfFTn2EenBGunjatNHjpgKAis7
YAJUCOIN:
YUD1Ju6iPst3paGVZHiabBLNrYA312XAVC
イーサ:
0xca5de1bB12BC5655628666fC4cA58ea52aA7eB51
[Unity2D]「連打ゲームをつくろう!」その1
Unity初めてなんか作ってみたい。
まずは簡単なものから、タッチ判定ぐらいでゲーム作ってみる。
フローはこんな感じかな。
- プロジェクト作る
- 文字を描画
- タッチ判定
- タイマーをつくる
その1、その2に分けて作っていくよ
その1のもくじ
じゃ早速作っていこう!
1.プロジェクトを作る!
プロジェクト名 : TouchGame
2D
Create Projectボタンクリック
これだけ
2.文字を描画!
uGUIを使ってTextオブジェクトを作る
位置を変える
フォントサイズを変える
文字の色を変えてみる
表示文字変えてみる
・uGUIを使ってTextオブジェクトを作る
Hierarchyビューを右クリック
[UI]>[Text]を選んで、できたオブジェクトのCanvasの中のTextをクリックして選ぶ。
とりあえずInspectorビューの中のRectTransformコンポーネントの中を
PosX = 0
PosY = 0
PosZ = 0
にセットしてプレビューしてみる。
文字もうでた。
ー 位置を変える ー
さっきいじった
InspectorビューのRectTransformの中の
PosX PosY PosZ
数値を変えるだけ。
Xが横Yが縦。
おわった。
ー フォントサイズを変える ー
InspectorビューのTextコンポーネントの中の
FontSizeの数字をいじってみよう!
あれ、なんか変わるっちゃ変わるけど28ぐらいから表示されなくなった。
InspectorビューのRectTransformの中の
Width = 300
Height = 100
ぐらいにしたら表示されるようになった。
ー 文字の色を変えてみよう ー
同じくInspectorビューのTextコンポーネントの中の
Colorの海苔みたいなところをクリック好きな色に変えてみよう。
できた。
ー 表示文字を変えてみよう ー
同じくInspectorビューのTextコンポーネントの中の
Textの四角の中のNew Textのところを変えてみよう。
できた。
その2からはスクリプト部分を組んで行くよ。
スクリプトっていっても十数行書くだけだけどね。
------------------------------------------------------------------
この記事がもし少しでも役に立ったら投げ銭お願いします。
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>