節電鯖民の遊び場
http://w.atwiki.jp/mcforum/
節電鯖民の遊び場
ja
2022-10-23T00:15:39+09:00
1666451739
-
Unity:クリッカーゲームを作ってみたい/11-Windows向け or WEB GL 向けにビルド、公開する
https://w.atwiki.jp/mcforum/pages/103.html
***目次
#contents(,fromhere=true)
* できたもの
プレイアブル:Github Page 公開ページ
https://ecolight15.github.io/akane_clicker_web/
&youtube(https://youtu.be/e4gqqadQAyI){425,350}
*前提
-[[Unity:クリッカーゲームを作ってみたい/10-もっと音を増やしたい]]の続き
*Windows向けビルド
#region(remember,詳細を開く)
** プロジェクト設定
- Edit → Project Settings... でプロジェクト設定ウインドウを開く
&ref(11_01_project_settings.png)
- Player から Company Name, Product Name, Version 等設定する
- Resolution and Presentation
-- 必要に応じて Fullscreen Mode は解除し、Windowed に変更する。
-- 解像度設定も入力する
-- ウインドウ枠を掴んで任意のサイズに変更可能にする場合には Resizable Window のチェックを入れる
-- Alt + Enter 等でのフルスクリーン切り替えを許可する場合は「Allow Fullscreen Switch」のチェックを入れる
&ref(11_02_windows_settings.png,,width=800)
- Splash Image
-- ゲーム開始時に表示されるメーカーロゴ等の設定を実施する
-- Preview ボタンを押すと動作を確認できる
-- Logos で任意のロゴが追加できる。
--- Unity のロゴは、無償版では削除不可
** ビルドする
- File → Build Settings... でビルド設定を開く
&ref(11_03_windows_build.png,,width=300)
- PC, Mac & Linux Standalone にユニティアイコンが付いていることをチェック
-- ついていない場合は、右下にSwitch Platform ボタ
2022-10-23T00:15:39+09:00
1666451739
-
Unity:クリッカーゲームを作ってみたい/12-その他トラブルシューティング
https://w.atwiki.jp/mcforum/pages/102.html
***目次
#contents(,fromhere=true)
*表示系の異常
** カメラのSize変更時、またはウインドウサイズ変更時に消えるスプライトがある
- とりあえず、カメラの Clipping Planes を Near:-10000 Far:10000 に拡張して対処した。
-- おそらく本当は Z 座標値とカメラ:スプライトの前後関係あたりが原因な気がしている
** 葵ちゃんの位置がたまに茜ちゃんの前に来たり後ろに来たりする
- 新しく葵ちゃんを作成するときに、茜ちゃんの位置を設定しているのが原因
-- 一旦 Transform に取り出して、z 座標を常に 0 に設定するようにして回避
--- AoiController
#region(remember,詳細を開く)
#highlight(linenumber,csharp){{
~省略~
public class AoiController : MonoBehaviour, ICounterReceiver
{
~省略~
public void spawnAoi() {
// prefab からインスタンスを生成
Vector3 pos = posTarget.transform.position;
pos.z = 0;
GameObject aoi = Instantiate(prefab, pos, Quaternion.identity);
~省略~
}
}}
#endregion()
*処理速度の問題
** ロード直後が重い
- 物理演算の際に、大量に一気に増えたオブジェクト同士が干渉しあって計算量が増大している
-- 出現地点をある程度分散したらマシになるかもしれないと思い、x 座標を若干ずらすコードを追加
-- コライダーの有効化を遅延させて有効にすることで緩和(根本解決ではない)
--- あまり遅延が大きいと壁の判定を貫通していく。
--- ウインドウサイズ等壁との距離によっても壁到達までの時間が変わるため、カメラSizeが上がったら長めの遅延となるよう適当な計算式を入れている。
- 他にもインスタンスを予め生成しておき、画面外に
2022-10-22T20:31:46+09:00
1666438306
-
Unity:クリッカーゲームを作ってみたい/10-もっと音を増やしたい
https://w.atwiki.jp/mcforum/pages/101.html
***目次
#contents(,fromhere=true)
* できたもの
&youtube(https://youtu.be/e4gqqadQAyI){425,350}
*前提
-[[Unity:クリッカーゲームを作ってみたい/09-エンディングを作成する]]の続き
*素材集め
- 今回音声を増やしていくことにする。
- 手持ちの VOICEROID2 琴葉 茜・葵 で作成
-- ライセンス: https://aivoice.jp/character/kotonoha/
-- VOICEROID個人向け商用ライセンス https://www.ah-soft.com/licensee/voice_individual.html
--- 商用ライセンスの要否あたりは参考になるので必読
*ゲームの開始時に茜ちゃんに喋ってもらう
- GameController についていた AudioSource を共用することにする
-- AudioSource のボリュームは 1 に戻しておく
- Click スクリプトに public メンバで ClickSound と StartSound を用意してそれぞれの音声を設定する。
&ref(10_01_start.png,,width=500)
** スクリプトで制御する
- Start関数で起動時にStartSoundを再生する。
- 既存の Click はAudioSourceにつけていた音声ではなく、public 変数のものを使用する。
-- 必要に応じて、PlayOneShot の際にパラメタを増やし volumeScale を指定してボリュームを下げて再生する。
#region(remember,詳細を開く)
#highlight(linenumber,csharp){{
using UnityEngine;
public class Click : MonoBehaviour
{
public AudioClip clickSound;
public AudioClip startSound;
GameController gameCtrl;
AudioSource clickAudio;
2022-10-22T21:43:21+09:00
1666442601
-
Unity:クリッカーゲームを作ってみたい/09-エンディングを作成する
https://w.atwiki.jp/mcforum/pages/100.html
***目次
#contents(,fromhere=true)
* できたもの
&ref(end.gif)
*前提
-[[Unity:クリッカーゲームを作ってみたい/08-音楽や音を鳴らす]]の続き
*素材集め
#region(remember,詳細を開く)
- とりあえずの背景を用意
-- 和風背景 桜1 https://commons.nicovideo.jp/material/nc112046
--- 利用許可範囲:インターネット全体に許可
--- 営利利用:営利利用可能
#endregion()
* エンディング用のキャンバスとコントローラーのオブジェクトを用意する
#region(remember,詳細を開く)
** 画面の構成
- Ending画面を画像のような形式とした。
- この時、キャンバス自体はマウスの判定等の影響が出ないようにプレイ中は無効化しておく。
-- そのため、制御用の EndingController 空オブジェクトを作成し、その中にCanvasを配置した。
&ref(09_01_hierarchy.png,,width=800)
- Canvas 内にはそれぞれ、複数の文字と背景画像、茜ちゃんと葵ちゃんの画像を配置する。
- この時、文字については Canvas Group コンポーネントを付けた image オブジェクトの配下に設置している。
-- これにより、image の Canvas Group コンポーネントの Alpha 値制御により、全ての文字の透明度を変更できる。
&ref(09_02_image.png,,width=500)
** 設定
- Canvas(エンディング用 Canvas)
-- Canvas
--- Render Mode を Screen Space - Camera に設定することで、Canvas Scaler との組み合わせで画面にフィットするように
--- Render Camera にはメインカメラを設定
--- Order in Layer は、全ての手前に来るように他の Canvas や スプライト画像より大きい値に設定する。(これは文字列を表示する Canvas Group の表示オーダーになる
2022-10-22T19:40:05+09:00
1666435205
-
Unity:クリッカーゲームを作ってみたい/08-音楽や音を鳴らす
https://w.atwiki.jp/mcforum/pages/99.html
***目次
#contents(,fromhere=true)
* できたもの
&youtube(https://youtu.be/TZ1uE9847tA)
*前提
-[[Unity:クリッカーゲームを作ってみたい/07-レベルアップする茜ちゃん]]の続き
*素材集め
#region(remember,詳細を開く)
- クリックした時の音
-- クリック https://commons.nicovideo.jp/material/nc44409
--- 利用許可範囲:インターネット全体に許可
--- 営利利用:営利利用可能
--- その他リンク希望の記述あり
#region(remember,引用文を開く)
HP・ブログ・SNSをお持ちの方は効果音を使用した際、リンクを貼っていただけると嬉しいです。
無料効果音で遊ぼう! https://taira-komori.jpn.org/
Audacityの音付きエフェクト解説・声の加工方法なんかもやってます。
#endregion()
- BGMに
-- 琴葉食品のうたoffvocal https://commons.nicovideo.jp/material/nc278791
--- 利用許可範囲:インターネット全体に許可
--- 営利利用:営利利用可能
- 適当なAssetsのディレクトリに格納しておく
&ref(08_01_sounds.png,,width=500)
#endregion()
*BGMを付ける
#region(remember,詳細を開く)
** 音源の登録
- BackgroundVideoPlayer に音源を持たせることにする
-- Assetsに格納されている音源ファイルを、ヒエラルキーのオブジェクトにドロップすることで、AudioSourceコンポーネントが追加され、Clipとして登録される
-- Play On Awake のチェックで、開始と同時に再生を開始する
-- Loop でBGMとしてなり続けるように設定
-- Volume は小さめで
&ref(08_02_bgm.png,,width=300)
#endregion()
*クリック音を付ける
#region(remem
2022-10-21T01:05:08+09:00
1666281908
-
Unity:クリッカーゲームを作ってみたい/07-レベルアップする茜ちゃん
https://w.atwiki.jp/mcforum/pages/98.html
***目次
#contents(,fromhere=true)
* できたもの
&ref(levelup_cam.gif)
*前提
-[[Unity:クリッカーゲームを作ってみたい/06-リファクタリング(ソースコードとオブジェクト関係の整理)]]の続き
*レベルアップ/ダウンする茜ちゃんのアニメーションを作る
#region(remember,詳細を開く)
- 茜ちゃんを選択して、Create New Clip.... から新しいアニメーションが追加できる。
&ref(07_01_levelup_anime.png,,width=300)
** レベルアップのアニメーション
&ref(levelup.gif,,width=300)
** レベルダウンのアニメーション
&ref(leveldown.gif,,width=300)
#endregion()
*アニメーションコントローラーに登録する
#region(remember,詳細を開く)
** レイヤーの追加
- 今回はクリックのアニメーションに加算して再生させる
- Animator の Layers を開いた際に表示される + ボタンから、新しいレイヤーを作成する。
-- ここでは LevelUp や LevelDown とする
&ref(07_02_layers.png,,width=500)
** レイヤーの設定
- レイヤーの右端の歯車を押して設定画面を開く
- Weight は 1 にする(ここは中途半端にするといい感じに合成してくれるかも。お好み)
- Blending は Additive を選択
&ref(07_03_layer_settings.png)
** トリガーの設定
- トリガーの設定をする
-- LevelUp時はlevelup、LevelDown時はleveldownトリガーを発生させるように
-- 矢印は該当アニメーションに向かう矢印にトリガーの設定をしたのみで、その他は未調整
&ref(07_04_trigger.png,,width=800)
#endregion()
*AkaneController でレベルアップアニメーションの制御をする
#region
2022-10-20T23:54:40+09:00
1666277680
-
Unity:クリッカーゲームを作ってみたい/06-リファクタリング(ソースコードとオブジェクト関係の整理)
https://w.atwiki.jp/mcforum/pages/97.html
***目次
#contents(,fromhere=true)
*前提
-[[Unity:クリッカーゲームを作ってみたい/05-マウスオーバーで表示されるメニューとSave&Load機能をつける]]の続き
*概要
&ref(06_01_refactoring.png,,width=800)
- 今後の拡張を見据えて、少し雑になっていたオブジェクト関係を見直し
- それに伴いスクリプトの内容も見直し
-- 茜ちゃん関連の操作は、トップレベルにいる AkaneController オブジェクトに実行させる
-- 葵ちゃん関連の操作は、トップレベルにいる AoiController オブジェクトに実行させる
-- AkaneController/AoiController は GameController からのカウント変更通知を受けて動作させる
*スクリプトを見直す
** ICounterReceiver
- 変更無し
#region(remember,詳細を開く)
#highlight(linenumber,csharp){{
public interface ICounterReceiver
{
public void UpdateCounter(int count);
}
}}
#endregion()
** Click
- クリックしたら GameController にインクリメントを依頼するだけの処理に変更
- 茜ちゃんの Click スクリプトコンポーネントは削除し、GameController オブジェクトに Click スクリプトを付け替え。
#region(remember,詳細を開く)
#highlight(linenumber,csharp){{
using UnityEngine;
public class Click : MonoBehaviour
{
GameController gameCtrl;
void Start() {
gameCtrl = GameObject.FindObjectOfType<GameController>();
}
void Update() {
2022-10-20T22:38:37+09:00
1666273117
-
Unity:クリッカーゲームを作ってみたい/05-マウスオーバーで表示されるメニューとSave&Load機能をつける
https://w.atwiki.jp/mcforum/pages/96.html
***目次
#contents(,fromhere=true)
* できたもの
&ref(load.gif)
*前提
-[[Unity:クリッカーゲームを作ってみたい/04-葵ちゃんが堆積するようにする]]の続き
*素材集め
#region(remember,詳細を開く)
- メニューウインドウを作るにあたって、枠を付けてみる
-- 洋風フレーム・装飾 A1 https://commons.nicovideo.jp/material/nc121822
--- 利用許可範囲:インターネット全体に許可
--- 営利利用:営利利用可能
--- その他付加細則あり
--- 素材のフレームのうち、角の部分を切り抜きAssetsに追加しておく。
#endregion()
*マウスを載せたら展開するメニューを作る
#region(remember,詳細を開く)
** パネルの配置
- Canvas にウインドウになる Panel を配置する。
-- 色を変更する場合は、インスペクターから Image → Color で変更する
- 画面右側に少しだけ見えていて、マウスを載せたら展開するため左端に素材のフレームを載せる。
-- 一つは Sprite Renderer の設定でY軸反転して載せる。スケールをマイナス値にしても良い。
- 今後の拡張性を見越して、メニュー内部でスクロールができるよう UI → Scroll View を設置する
- Scroll View の Viewport → Content にスクロールさせたい文字やボタンを配置する
-- ここでは「めにゅー」の UI → Text (TextMeshPro) と UI → Button(TextMeshPro)
&ref(05_01_panel.png,,width=800)
** アンカーの設定はお好み
- Game 画面に見えている状態(パネルを展開した想定の位置)でウインドウサイズを変更してみて挙動を確認
- ここでの設定は以下
-- Panel は center/middle
-- 縁の素材は left/top と left/bottom
-- Scroll View / Viewport / Content は s
2022-10-19T02:11:23+09:00
1666113083
-
Unity:クリッカーゲームを作ってみたい/04-葵ちゃんが堆積するようにする
https://w.atwiki.jp/mcforum/pages/95.html
***目次
#contents(,fromhere=true)
* できたもの
&ref(wall.gif)
*前提
-[[Unity:クリッカーゲームを作ってみたい/03-背景とカウンタを用意する]]の続き
* 葵ちゃんが堆積する地面を用意する
#region(remember,詳細を開く)
- 画面は可変サイズとする
- そこで、画面にスナップしているCanvasを利用する
-- ヒエラルキーからCanvasに対して 2D Object の Sprites → Square を追加する
&ref(04_02_square.png,,width=500)
- Square を画面外下部少し離した位置に設置し、Scale を X=10000, Y=100 に設定し横に引き伸ばす
- 更に Polygon Collider 2D コンポーネントを追加する
- 画面下部との相対位置を維持するよう Rect Transform の Anchor Presets 設定で center/bottom を選択する
- 以上の設定で葵ちゃんが堆積するように
&ref(04_01_collider.png,,width=800)
#endregion()
* 葵ちゃんが積もるように壁を用意する
#region(remember,詳細を開く)
- 地面をコピーして Scale を X=100, Y=10000 にして、両側に配置する。
- 左側の壁の Anchor Presets は left/middle 設定にする
- 右側の壁の Anchor Presets は right/middle 設定にする
&ref(04_03_wall.png,,width=800)
#endregion()
* 負荷軽減のため壁を貫通または上限に達した葵ちゃんを送還する
#region(remember,詳細を開く)
- 白い壁と同じ要領で更に外側に赤い壁を作成し、それにぶつかった葵ちゃんは消えるようにする。
-- Sprite Renderer の Color でスプライト画像の色を変更し赤くしておく。
-- 衝突検知のため、壁の Polygon Collider 2D の Is Trigger のチェック
2022-10-18T01:42:47+09:00
1666024967
-
Unity:クリッカーゲームを作ってみたい/03-背景とカウンタを用意する
https://w.atwiki.jp/mcforum/pages/94.html
***目次
#contents(,fromhere=true)
* できたもの
&ref(counter.gif)
*前提
-[[Unity:クリッカーゲームを作ってみたい/02-茜ちゃんをクリックしたら葵ちゃんを散らせる]]の続き
*素材集め
#region(remember,詳細を開く)
- 権利を確認しながら素材を集める。
- とりあえず何らかの背景素材
-- 和風なループする背景(ピンクの花柄) https://commons.nicovideo.jp/material/nc149772
--- 利用許可範囲:インターネット全体に許可
--- 営利利用:営利利用可能
- あとカウンタ表示にデフォルトのフォントはイマイチな気がしたのでフォントを探してimportしておく。
-- Selected U3D Japanese Font
--- https://assetstore.unity.com/packages/2d/fonts/selected-u3d-japanese-font-337
--- License agreement: Standard Unity Asset Store EULA https://unity.com/legal/as-terms
--- Extension Asset: One license required for each individual user.
--- ベースはM+Fontでreadme/license文書が同梱 https://mplusfonts.github.io/
#endregion()
* 背景映像を貼りつける
#region(remember,詳細を開く)
-ヒエラルキーで VideoPlayer を追加
&ref(03_01_video_player.png,,width=300)
- 背景videoは適当にAssetsに入れてあるものとする
&ref(03_02_video.png)
- video playerに背景videoファイルを登録して各種設定を実施
-- Video Clip: Assetのvideoファイルをドロップして登録
-- Loop: ループ素材なのでチェックを入れる
-- Render M
2022-10-18T01:40:49+09:00
1666024849