【Unity】いろいろなタイマー

ストップウォッチが無事に作れたと言う事で、 次はタイマーを作ってみたいと思います。 タイマーと一口に言っても、テキスト表示だけではストップウォッチと変わりません。 なので、いろいろと視覚的なタイマーを作ってみたいと思います。 タイマーの時間は、60秒からのカウントダウンで0になれば終了とします。 タイマーの視覚効果として、 ・色変化 ・プログレスバー ・アクション この辺を盛り込んでみたいと思います。 できたものを動画にしてみました。 TimerTest - TimerScene - Android - Unity 2019.3.0f3 Personal_ _DX11_ 2020-02-14 17-12-51_x264.mp4 それにしても目がチカチカする (@-@) 見て下さった方申し訳ないです。_(._.)_ ユルシテ 時間経過に合わせて、いろいろなタイマーを作ってみました。 各タイマーの作り方は、順次ブログに挙げる予定でっす。 今回の〆は、デジタルタイマーの作り方を まず、スタート用のButtonオブジェクトと時間表示用のTextオブジェクトを用意します。 Textには、60.00と入力しておきます。 続いて、スクリプトを作成します。 TimerManager using System.Collections; using System.Collections.Generic; using…

続きを読む

【Unity】ストップウォッチを作ってみる

前回、経過時間の取得を記事にしました。 折角なので、時間を使った物を作ってみたいと思います。 時間を使った物と言えば、ストップウォッチやタイマーでしょうか。 今回は、ストップウォッチを作ってみたいと思います。 ストップウォッチと言っても数値を表示するだけになりそうなので、 アナログとデジタルの両方を考えてみたいと思います。 Unityのセッティングをします。 プラットホームはandroidで、キャンバスの設置と白背景をセットします。 背景ができた所でパーツになるオブジェクトを配置します。 UIをまとめる為にキャンバスを追加して、CanvasUIにリネーム レイヤーを1にします。 パーツとしては、アナログディスプレイ、デジタルディスプレイ、ボタン類のペアレントを用意します。 アナログディスプレイは、メイン文字盤とメイン針をセットして秒に対応させます。 メイン文字盤の中にある赤いサブ文字盤は分計となります。 針は、支点を下端にする必要があるので、セットする際にYピボットを0にします。 これで、回転のz軸の角度を変えると針の下端を中心に回ってくれます。 サブの分計の針もYピボットを0にします。 アナログのパーツができたので、デジタルのパーツを用意します。 デジタルのパーツは、色付き背景とテキストを用意すれば問題ないかと思います。 デジタルの表示は、時:分:秒の表示にします。 秒は、小数点以下2位までの表示としま…

続きを読む

【Unity】経過時間の取得

2020/2/6一部修正 2020年に入って、1カ月サボってしまいました(..*) オハズカシイ・・ 年末から公開アプリを作り始めたのですが、 絵が作れない、ゲーム性がない、アイディアが足りない そんな感じでテンションが下がってしまい、ズルズルと今日まで…才能ないな~(´`;) このままでは終わってしまうので、 続ける為に無理やりお題を設けて、ブログを更新する事にしました。 今回のテーマは”時間”です。 ゲームの時間管理は、アクション系やパズル系でも多用するかと思います。 時間管理をするには、色々な方法があると思うので勉強してみます。 ・Timeクラス これが一番使われています。 フレームを利用した時間経過を測定するクラスで、 主にTime.TimeやTime.deltaTimeが使われます。 ・DateTime構造体 現在時刻の取得ができます。 開始時間を取得して現時刻の差で取得できます。 ・コルーチンで一定時間処理 例外的ですが、コルーチンでも処理はできるかと思います。 他にもありそうですが、現段階で理解しているのは、この辺りです。 早速、Timeクラスから使ってみたいと思います。 Time.time using System.Collections; using System.Collections.Generic; using UnityEngine; public cl…

続きを読む

【Unity】マップエディターを自作してみる(後編)

前回に続き、簡易マップエディターの作成でっす。 筆操作と言っていいのかわからないのですが、 一応、操作系は出来上がりました。 今回は、スプライトの一括クリアとcsvファイル作成を組んで行きます。 まずは、一括クリアからなんですが、 スプライトの貼り付けは、FieldButtonは単体で処理を行っています。 各ボタンにスクリプトを割り当ててるので、ボタン設定などを一つ一つ 設定するのは面倒です。 なので、PalletManagerから各ボタンに指示がだせるように 処理して行こうと思います。 まず、UnityでUIを作ります。 ついでにセーブボタンも作っておきます。 これは、Buttonオブジェクトで問題ないかと。 つづいて、スクリプトを作成します。 PalletManager private bool Clear; //スプライトをnullにするフラグ変数 private int count; //フィールドボタンのカウント変数 //オールクリアを押した処理 public void AllClear() { ACProperty = true; } //各ボタンのクリアが出来たかカウントする public void Sign…

続きを読む

【Unity】マップエディターを自作してみる(前編)

前回、タイルパレットを使った背景作りを記事にしました。 背景作りには便利そうなのですが、オブジェクトの配置には、 どうしたらいいのかなと考えております。 おそらくプレハブなんかもタイルパレットは使えそうなのですが、 配置をデータ化してcsvファイルに保存する事はできないのでは?と思っています。 今回は、マップエディターを自作して、 オブジェクトの配置をデータ化してみようと思います。 タイルパレットほど機能は無くても、自作ゲームの配置くらいは、 処理できるような物にしたいと思います。 機能としては、 ・スプライトの選択 ・選択したスプライトをポジション位置に貼り付け ・消しゴム機能 ・一括クリア ・csvデータファイルの保存 これがあればエディターとして機能しそうです。 ます、UIを作って行くのですが、 ポジションを無限にするのは、敷居が高いので6×6マスの範囲で作ってみます。 エディターは、Unity上で動けば問題ないので、 プラットホームはなんでもOKかと。 今回は、androidにセッティングしています。 キャンバス配置からBackのベースを作って、 二枚のイメージを追加します。 右の木目調がFieldParent 左がPalletParent この中にボタンを配置していきます。 ただ、Buttonオブジェクトを追加しても選択中の処理がしにくいので、 今回は、ImageのEventtriggerで…

続きを読む

【Unity】2019以降でTilePalletを使う

ゲームを作る上で、マップデータ作成は重要なのですが、 一つ一つオブジェクトを配置していると時間が掛かります。 同じマップを使い回すゲームなら、それほど苦にもならないのですが、 ステージ毎に配置が変わる場合、マップを作るだけでイヤになります。( ̄~ ̄;) ゲームを作ろうとして、勉強を始めたのにシステムの構築より マップ作りに手間が掛かってしまって、挫折される方もいるのではないでしょうか。 アイデアが形にならない時ほど、イライラするものでっす。ヽ(`⌒´)ノ ウッキー この辺りを簡単に処理できると作成意欲も湧いてくるので、 マップ作成の手間を少しでも抑える工夫を勉強していきたいと思います。 まず、TilePalletと言うのがあるそうで、 登録したスプライトをタイルのように張り付ける(この解釈で合ってるのか?) 機能で、2Dのスプライトを張り合わせて背景を作る事ができるようでっす。 2017年版のUnityから登場したようですが、2019以降から設定が分かりにくくなったので、 そのへんも踏まえてやってみたいと思います。 2017や2018の場合、ウィンドウ→2D→TilePalletが表示されますが、 2019以降はパッケージが分離された為、インポートしないと使えないようです。 まずTilePalletを使う為に2DTilemapEditorが必要になるので、 インポートします。 ウィンドウ→PackageManagerをク…

続きを読む

【Unity】Resources.LoadでCSVを扱う

いよいよ12月でっす。 2019の終わりが近づいてまいりました。 令和元年に何かを残したくて日々勉強中です。 年内中に簡単なアプリをアウトプットできるように 頑張ってるのですが、思うように行かないのがプログラムと人生。 無事にできるといいのですが(´`;) さてさて、勉強中に仕入れた情報を少し書いてみたいと思います。 以前、CSVの扱いを書いたのですが、 ファイルの内容をエクセルで編集する必要があったので、 オープンなフォルダに保存できるようにしていました。 ゲームのフィールドデータやゲーム内容を保存する場合、 オープンなファイルに保存するとユーザーからもアクセスできるので、 内容の編集ができてしまうのは問題があります。 なので、大事なデータはResourcesフォルダー内に保存して 読み書きできるようにするのが、一般的だと思います。 ハックできる人なら簡単に見る事ができるそうですが、 そのへんはスルーします。(;^o^) \(ToT )あんたほんとにそれでいいの 今回は、csvデータからオブジェクトをクローン配置してみます。 内容としては、脱出ルートの表示にしてみようかと思います。 用意したのは、 矢印だらけで分かりにくい…  (..*) オハズカシイ・・ フィールドに隠された爆弾があり、条件を満たすと脱出ルートと爆弾が表示される みたいな感じです。 まず、クローンを生成する為にオブジェク…

続きを読む

【Unity】二次元配列のコピーや初期化

2048のバグを修正しているのですが、 上手く行きません。(ToT )( ToT) ウルウル バグの修正をするよりもシステム自体を作り直す方が早い? と思いまして、一から作り直しています。 新しいシステムが機能するといいのですが… 2048の事は、この辺で置いといて 配列について、調べた事があるので記事にしてみます。 2048のスクリプトでも、二次元配列の初期化を行ったのですが、 forループで0を代入する方法でした。 どうやらコマンドがあるようで、初期化やコピーが出来るみたいです。 知っている方からすれば今更なんですが、 今まで存在すら知りませんでした。(~-~;)ヾ(-_-;) オイオイ ループで処理する事には、問題ないのですが、 ループとコマンドで処理速度を比較されているサイトを見ると コマンドで処理する方が早いようです。 なので、コマンドを使えるように勉強したいと思います。 変数のコピーは、 int A=10; int B=5; A=B; これでAに5が代入されて Bの値がコピーされました。 この後、Bに新しい数値を代入してやれば、 B=2; Debug.Log(A); Debug.Log(B); コンソールには、5と2が表示されます。 配列で同じ事をしてみます。 int[]A=new int[5]; int[]B={1,2,3,4,5}; …

続きを読む

【Unity】2048 操作系でバグが発生

ピース生成の際にバグが発生しておりましたが、 コルーチンを修正して、ピース生成後に フリック入力を復帰できるように修正しました。 これでOKと思っていたのですが… PC上でテストをしていると違うバグが発生し始めました。 マウスをカチカチと連打しながらフリックしていると Consoleにエラーの表示が… 座標の読み取りでIndexOutOfRangeExceptionのエラーです。 ピースの移動時にポジションを消去するのですが、 消去後の座標を読み取ると計算コードが狂ってしまいます。 フリック入力時にピース配列を読み取っているのですが、 この部分で座標の読み取りを失敗しているようです。 //フリックが入力中か判断する if (input) { return; } //タッチの始点を取得 if (Input.GetKeyDown(KeyCode.Mouse0)) { touchStartPos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, …

続きを読む

【Unity】2048をスマホで試してみた

2048を作ってみて、少し頭がパンクぎみで 1週間ほどサボってました(;^_^A ぼちぼち勉強を再開して行こうと思うのですが… その前に2048をアプリにして操作した時の 問題点を書こうと思います。 操作や得点には問題も無く、無事にゲームが出来ているのですが、 あるタイミングでフリックやタップをするとバグが出ます。 実は、ピース生成の際に少し問題があります。 ピース移動中のフリックをキャンセルする為、 GameManager側でbool型変数のcreateを使用しています。 この変数をfalseにするタイミングが微妙な為、 バグが発生しております。(ノ_<。)うっうっうっ GameManager //空きマスからランダムに2カ所を選ぶ public void SelectPosition() { List list = new List(); //空きマスを取得する変数 int num = 2; //ピースの生成回数 int rot = 0; //ピースの生成カウント int limit=0; //空マスのカウント for(int i = 0; i <…

続きを読む