きんきょー

近況

お久しぶりです。生きてます。

play.google.com

1月中は麻雀点数計算練習アプリのアップデートの作業がなかなか進まず、
そっちに集中して取り組んでいたのですが、今月に入ってからまた自分の生活の方でも優先順位の高い問題が発生して、なかなかブログの更新まで手がつけられずにいます。

今のところ、いつごろ復活というメドがたつ状況ではないのですが、もっとアウトプットのために勉強したいという欲はあるので、少しでも早く更新再開できることを目指しています。

…うまい〆も思いつかないのでそれでは!

『Select10』(勝手に)模写できない10

f:id:yjkym:20190103183938p:plain
select10 | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

序文

「Select10」模写10日目。

能力のない人は回収の見込みが立たないから自己投資ができないというマイナスのスパイラルからどう抜け出せばいいのだろうかというようなことを考えているすてきな日曜日。

進捗

  • なし

コード実装部分(一部)

なし

実行結果

f:id:yjkym:20190113143322p:plain

感想

2Dオブジェクトをいい感じに発光させる方法を模索中。

baba-s.hatenablog.com

「SpriteGlow」というスクリプトを使うといいよーという記事をいつものブログから見つけたので試してみる。

エディター上では↑いい感じになるのに、実際にゲームを起動してみると

f:id:yjkym:20190113143805p:plain

しょっぼ。

もうちょっと調べてみます。

カロリーメイトください。

今日のunityroom

RollOverBall | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

www.youtube.com

バグなのか自分が操作を理解してないのかよくわからない

『Select10』(勝手に)模写する9

f:id:yjkym:20190103183938p:plain
select10 | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

序文

「Select10」模写9日目。

なんとなく体重計に乗ったらかつて見たことない数字が出てきてビビる。
歳だなぁ。

進捗

  • スコアフェードイン

コード実装部分(一部)

なし

実行結果

f:id:yjkym:20190111144514p:plain

感想

スコアのフェードインを実装。終わり。

もとのプロジェクトの仕様を調べたりしていた。

画面上部のタイムバーを実装しようと思ったんだけど、ここ3Dで実装してるのよね…。
2Dのプロジェクトにしてしまったので、ナニカいい方法がないか試行錯誤中。
つーかマテリアル自体よくわかってない…

カロリーメイトください。

今日のunityroom

おやすみ

『Select10』(勝手に)模写する8

f:id:yjkym:20190103183938p:plain
select10 | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

序文

「Select10」模写8日目。

体力づくりのために、深夜徘徊ランニングを再開しました。
年1,000km目標!とかこのブログでやろうかなぁと思ったんですが、さすがにとっちらかりすぎる気がしたのでやめた。

進捗

  • ユニティちゃん登場
  • ゲーム画面フェードイン

コード実装部分(一部)

Select10Copy\Assets\Scripts\GameSceneFacade.cs

using System.Collections;
using UnityEngine;

namespace GameScene
{
    public class GameSceneFacade : MonoBehaviour
    {
        public CanvasFader gamePanelCanvasFader;
        public CanvasFader gameCharacterCanvasFader;

        internal void StartGame()
        {
            StartCoroutine(_StartGame());
        }

        private IEnumerator _StartGame()
        {
            float fadeInTime = 1.0f;
            gamePanelCanvasFader.FadeIn(fadeInTime);
            gameCharacterCanvasFader.FadeIn(fadeInTime);
            yield return new WaitForSeconds(fadeInTime);
        }
    }
}

実行結果

www.youtube.com

感想

ようやくタイトル画面が模写できたので、いよいよゲーム本体の画面の実装へ。

2Dユニティちゃんの実装方法を忘れていてアセットストアを探しまくってしまった。
↓ここでした。
unity-chan.com

立ちユニティちゃんもちょっとだけアニメーション(瞬き)させる。

フェードイン・フェードアウトの処理はさすがに汎用化したほうがいいよなーと思ったのでpublicに切り出す。

…今はこれで問題ないだろーと思ってるけど、のちのち微妙に仕様が違ってきたりして結局個々に実装し直すってこともよくあるのよね…。
ここらへんの感覚を磨くのも難しい…

カロリーメイトください。

今日のunityroom

TAMAKAYUI | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう
www.youtube.com
なにがモチーフなのかぼくわかんない

『Select10』(勝手に)模写する7

f:id:yjkym:20190103183938p:plain
select10 | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

序文

「Select10」模写7日目。

GitHubのプライベートリポジトリが無料で使えるようになったみたいですね。
これGitHubにあげて管理したいけど、(権利的に)このファイル公開したらマズいなぁ…みたいなことがよくあったのでありがたいです。

進捗

  • 設計見直し

コード実装部分(一部)

Select10Copy\Assets\Scripts\TitleFacade.cs

using BGM;
using System.Collections;
using UnityEngine;

namespace Title
{
    public class TitleFacade : MonoBehaviour
    {
        public TitleFacade titleFacade;

        public TitleLogoFader titleLogoFader;

        public GameObject title10Button;
        public Title10ButtonSound title10ButtonSound;
        public Title10ButtonAnimator title10ButtonAnimator;

        public GameObject titleArrow;
        public TitleArrowSound titleArrowSound;
        public TitleArrowAnimator titleArrowAnimator;

        public BGMPlayer bgmPlayer;

        public float animationTimeAfterWaitTime;
        public TitleCanvasFader titleCanvasFader;


        internal void DisplayTitle()
        {
            StartCoroutine(_DisplayTitle());
        }

        private IEnumerator _DisplayTitle()
        {
            float fadeInTime = 1.0f;
            titleLogoFader.FadeIn(fadeInTime);
            yield return new WaitForSeconds(fadeInTime);

            title10Button.SetActive(true);
            title10ButtonSound.SoundSEActivate();
            float button10AnimationTime = 1.0f;
            title10ButtonAnimator.AnimateActivate(button10AnimationTime);
            yield return new WaitForSeconds(button10AnimationTime);

            titleArrow.SetActive(true);
            titleArrowSound.SoundSE();
            float arrowAnimationTime = 0.5f;
            titleArrowAnimator.Animate(arrowAnimationTime);
            yield return new WaitForSeconds(arrowAnimationTime);
        }

        public void OnClickTitleButton()
        {
            StartCoroutine(_OnClickTitleButton());
        }

        private IEnumerator _OnClickTitleButton()
        {
            float animationTime = 1.0f;
            title10ButtonSound.SoundSEPushButton();
            title10ButtonAnimator.AnimatePushButton(animationTime);
            bgmPlayer.StopBGM();
            yield return new WaitForSeconds(animationTimeAfterWaitTime);

            float fadeOutTime = 1.0f;
            titleCanvasFader.FadeOut(fadeOutTime);
            yield return new WaitForSeconds(fadeOutTime);
        }
    }
}

実行結果

昨日と同じなので割愛

感想

今までは「同じ名前空間に属するクラスは直接メッセージをやり取りしてよい。異なる名前空間に属するクラスは専用のクラスを通じてメッセージをやり取りしなければならない」というルールで設計を行っていたのだけど、「同じ名前空間に属するクラスも専用のクラス(Facade)を通じてメッセージをやり取りしなければならない」というルールに変えてみた。
これでひとつの名前空間内のメッセージの流れを同じクラス内で管理できるようになった気がする。

試行錯誤も大事だとは思うが、これがベストプラクティスだみたいなのも誰か示してほしい。
デザインパターンか。デザインパターンだよな。

増補改訂版Java言語で学ぶデザインパターン入門

増補改訂版Java言語で学ぶデザインパターン入門

一応読んだんだけど、例が抽象的だったりあまりにシンプルすぎたりしてどう応用したらいいのかよくわからない…

カロリーメイトください。

今日のunityroom

ChaseAI | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう www.youtube.com 楽しみ方が違う。
この経路検索はアルゴリズムでやってんのかな?
勉強した気がするけど忘れた。

【Unity】元号ジェネレーターつくた【ネタ】

f:id:yjkym:20190108211939p:plain

unityroom.com

序文

jisin.jp

はてブにあがってたこのエントリ見て、作らなきゃ(使命感)と思た。

コード

using UnityEngine;
using UnityEngine.UI;

public class Script : MonoBehaviour
{
    public Text char1;
    public Text char2;
    public GameObject image;
    public GameObject tweetButton;
    public AudioSource start;
    public AudioSource stop;

    private SceneEnum currentScene;

    private enum SceneEnum
    {
        ROLL1,ROLL2,RESULT
    }

    private string characters =
        "亜哀挨愛曖悪握圧扱宛嵐安案暗以衣位囲医依委威為畏胃尉異移萎偉椅彙意違維慰遺緯域育一壱逸茨芋引印因咽姻員院淫陰飲隠韻右宇羽雨唄鬱畝浦運雲永泳英映栄営詠影鋭衛易疫益液駅悦越謁閲円延沿炎怨宴媛援園煙猿遠鉛塩演縁艶汚王凹央応往押旺欧殴桜翁奥横岡屋億憶臆虞乙俺卸音恩温穏下化火加可仮何花佳価果河苛科架夏家荷華菓貨渦過嫁暇禍靴寡歌箇稼課蚊牙瓦我画芽賀雅餓介回灰会快戒改怪拐悔海界皆械絵開階塊楷解潰壊懐諧貝外劾害崖涯街慨蓋該概骸垣柿各角拡革格核殻郭覚較隔閣確獲嚇穫学岳楽額顎掛潟括活喝渇割葛滑褐轄且株釜鎌刈干刊甘汗缶完肝官冠巻看陥乾勘患貫寒喚堪換敢棺款間閑勧寛幹感漢慣管関歓監緩憾還館環簡観韓艦鑑丸含岸岩玩眼頑顔願企伎危机気岐希忌汽奇祈季紀軌既記起飢鬼帰基寄規亀喜幾揮期棋貴棄毀旗器畿輝機騎技宜偽欺義疑儀戯擬犠議菊吉喫詰却客脚逆虐九久及弓丘旧休吸朽臼求究泣急級糾宮救球給嗅窮牛去巨居拒拠挙虚許距魚御漁凶共叫狂京享供協況峡挟狭恐恭胸脅強教郷境橋矯鏡競響驚仰暁業凝曲局極玉巾斤均近金菌勤琴筋僅禁緊錦謹襟吟銀区句苦駆具惧愚空偶遇隅串屈掘窟熊繰君訓勲薫軍郡群兄刑形系径茎係型契計恵啓掲渓経蛍敬景軽傾携継詣慶憬稽憩警鶏芸迎鯨隙劇撃激桁欠穴血決結傑潔月犬件見券肩建研県倹兼剣拳軒健険圏堅検嫌献絹遣権憲賢謙鍵繭顕験懸元幻玄言弦限原現舷減源厳己戸古呼固股虎孤弧故枯個庫湖雇誇鼓錮顧五互午呉後娯悟碁語誤護口工公勾孔功巧広甲交光向后好江考行坑孝抗攻更効幸拘肯侯厚恒洪皇紅荒郊香候校耕航貢降高康控梗黄喉慌港硬絞項溝鉱構綱酵稿興衡鋼講購乞号合拷剛傲豪克告谷刻国黒穀酷獄骨駒込頃今困昆恨根婚混痕紺魂墾懇左佐沙査砂唆差詐鎖座挫才再災妻采砕宰栽彩採済祭斎細菜最裁債催塞歳載際埼在材剤財罪崎作削昨柵索策酢搾錯咲冊札刷刹拶殺察撮擦雑皿三山参桟蚕惨産傘散算酸賛残斬暫士子支止氏仕史司四市矢旨死糸至伺志私使刺始姉枝祉肢姿思指施師恣紙脂視紫詞歯嗣試詩資飼誌雌摯賜諮示字寺次耳自似児事侍治持時滋慈辞磁餌璽鹿式識軸七叱失室疾執湿嫉漆質実芝写社車舎者射捨赦斜煮遮謝邪蛇尺借酌釈爵若弱寂手主守朱取狩首殊珠酒腫種趣寿受呪授需儒樹収囚州舟秀周宗拾秋臭修袖終羞習週就衆集愁酬醜蹴襲十汁充住柔重従渋銃獣縦叔祝宿淑粛縮塾熟出述術俊春瞬旬巡盾准殉純循順準潤遵処初所書庶暑署緒諸女如助序叙徐除小升少召匠床抄肖尚招承昇松沼昭宵将消症祥称笑唱商渉章紹訟勝掌晶焼焦硝粧詔証象傷奨照詳彰障憧衝賞償礁鐘上丈冗条状乗城浄剰常情場畳蒸縄壌嬢錠譲醸色拭食植殖飾触嘱織職辱尻心申伸臣芯身辛侵信津神唇娠振浸真針深紳進森診寝慎新審震薪親人刃仁尽迅甚陣尋腎須図水吹垂炊帥粋衰推酔遂睡穂随髄枢崇数据杉裾寸瀬是井世正生成西声制姓征性青斉政星牲省凄逝清盛婿晴勢聖誠精製誓静請整醒税夕斥石赤昔析席脊隻惜戚責跡積績籍切折拙窃接設雪摂節説舌絶千川仙占先宣専泉浅洗染扇栓旋船戦煎羨腺詮践箋銭潜線遷選薦繊鮮全前善然禅漸膳繕狙阻祖租素措粗組疎訴塑遡礎双壮早争走奏相荘草送倉捜挿桑巣掃曹曽爽窓創喪痩葬装僧想層総遭槽踪操燥霜騒藻造像増憎蔵贈臓即束足促則息捉速側測俗族属賊続卒率存村孫尊損遜他多汰打妥唾堕惰駄太対体耐待怠胎退帯泰堆袋逮替貸隊滞態戴大代台第題滝宅択沢卓拓託濯諾濁但達脱奪棚誰丹旦担単炭胆探淡短嘆端綻誕鍛団男段断弾暖談壇地池知値恥致遅痴稚置緻竹畜逐蓄築秩窒茶着嫡中仲虫沖宙忠抽注昼柱衷酎鋳駐著貯丁弔庁兆町長挑帳張彫眺釣頂鳥朝貼超腸跳徴嘲潮澄調聴懲直勅捗沈珍朕陳賃鎮追椎墜通痛塚漬坪爪鶴低呈廷弟定底抵邸亭貞帝訂庭逓停偵堤提程艇締諦泥的笛摘滴適敵溺迭哲鉄徹撤天典店点展添転填田伝殿電斗吐妬徒途都渡塗賭土奴努度怒刀冬灯当投豆東到逃倒凍唐島桃討透党悼盗陶塔搭棟湯痘登答等筒統稲踏糖頭謄藤闘騰同洞胴動堂童道働銅導瞳峠匿特得督徳篤毒独読栃凸突届屯豚頓貪鈍曇丼那奈内梨謎鍋南軟難二尼弐匂肉虹日入乳尿任妊忍認寧熱年念捻粘燃悩納能脳農濃把波派破覇馬婆罵拝杯背肺俳配排敗廃輩売倍梅培陪媒買賠白伯拍泊迫剥舶博薄麦漠縛爆箱箸畑肌八鉢発髪伐抜罰閥反半氾犯帆汎伴判坂阪板版班畔般販斑飯搬煩頒範繁藩晩番蛮盤比皮妃否批彼披肥非卑飛疲秘被悲扉費碑罷避尾眉美備微鼻膝肘匹必泌筆姫百氷表俵票評漂標苗秒病描猫品浜貧賓頻敏瓶不夫父付布扶府怖阜附訃負赴浮婦符富普腐敷膚賦譜侮武部舞封風伏服副幅復福腹複覆払沸仏物粉紛雰噴墳憤奮分文聞丙平兵併並柄陛閉塀幣弊蔽餅米壁璧癖別蔑片辺返変偏遍編弁便勉歩保哺捕補舗母募墓慕暮簿方包芳邦奉宝抱放法泡胞俸倣峰砲崩訪報蜂豊飽褒縫亡乏忙坊妨忘防房肪某冒剖紡望傍帽棒貿貌暴膨謀頬北木朴牧睦僕墨撲没勃堀本奔翻凡盆麻摩磨魔毎妹枚昧埋幕膜枕又末抹万満慢漫未味魅岬密蜜脈妙民眠矛務無夢霧娘名命明迷冥盟銘鳴滅免面綿麺茂模毛妄盲耗猛網目黙門紋問冶夜野弥厄役約訳薬躍闇由油喩愉諭輸癒唯友有勇幽悠郵湧猶裕遊雄誘憂融優与予余誉預幼用羊妖洋要容庸揚揺葉陽溶腰様瘍踊窯養擁謡曜抑沃浴欲翌翼拉裸羅来雷頼絡落酪辣乱卵覧濫藍欄吏利里理痢裏履璃離陸立律慄略柳流留竜粒隆硫侶旅虜慮了両良料涼猟陵量僚領寮療瞭糧力緑林厘倫輪隣臨瑠涙累塁類令礼冷励戻例鈴零霊隷齢麗暦歴列劣烈裂恋連廉練錬呂炉賂路露老労弄郎朗浪廊楼漏籠六録麓論和話賄脇惑枠湾腕々龍罠糞肛蛾蛙謳諜誹醤隕飴餃騙鮭嘘叩噂濡笠嬉朋覗撫溜鷹揃頷翔喋洩禄栗馴駕鴨淵駿蘭胡蘇狼蝶惚蒼腿菩吊雀樽壺祀卿歪棲磯桶鷲媚寵秤套疼賤糊誼截綬庄毅揆躇躊憐狽萌撥謳蔓捏饉倦恍斡膠疇謗乖誹蒙聘憚哨";


    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        if (currentScene == SceneEnum.ROLL1)
        {
            int index = Random.Range(0, characters.Length);
            char1.text = characters[index].ToString();
            index = Random.Range(0, characters.Length);
            char2.text = characters[index].ToString();
            if (Input.GetMouseButtonDown(0))
            {
                start.Play();
                currentScene = SceneEnum.ROLL2;
            }
        }else if (currentScene == SceneEnum.ROLL2)
        {
            int index = Random.Range(0, characters.Length);
            char2.text = characters[index].ToString();
            if (Input.GetMouseButtonDown(0))
            {
                stop.Play();
                currentScene = SceneEnum.RESULT;
            }
        }else if(currentScene== SceneEnum.RESULT)
        {
            image.SetActive(true);
            tweetButton.SetActive(true);
        }
    }

    public void Tweet()
    {
        naichilab.UnityRoomTweet.TweetWithImage("gengougenerator", "次の元号が決まりました", "元号ジェネレーター");
    }

    public void Restart()
    {
        start.Play();
        currentScene = SceneEnum.ROLL1;
        image.SetActive(false);
        tweetButton.SetActive(false);
    }
}

1時間で書いた。良い子は真似しない。
これ以外のコードはありません。

GitHub

github.com
素材ファイル自体はignoreしています。

感想

ネタだけど割と収穫があった気がする。
偶然性には普遍的な面白さがある。
あと何の説明もなくてもコンテンツとして成り立つのは究極のUIだと思う。
あとまぁいろいろ。
つかこれ1週間ゲームジャムのネタにすればよかったなぁ。(お題わかんないけど)
真っ向勝負してもどうせ見向きされないしさ。

カロリーメイトください。

すごい

『Select10』(勝手に)模写する6

f:id:yjkym:20190103183938p:plain
select10 | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

序文

「Select10」模写6日目。

私のせいじゃない(と思う)んですが当ブログを閲覧中に(おなじみの)下記のようなサイトへリダイレクトされる現象を確認しました。
f:id:yjkym:20190108143620p:plain

こんな辺境のブログを見てるんだから自己責任で対処してねてへぺろ

あと楽天アフィリエイトへ飛ばされるパターンもありました。

進捗

  • ボタン押下後のタイトル画面のフェードアウト

コード実装部分(一部)

Select10Copy\Assets\Scripts\TitleButtonHandlerCaller.cs

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

namespace Title
{
    public class TitleButtonHandlerCaller : MonoBehaviour
    {
        public Title10ButtonSound title10ButtonSound;
        public Title10ButtonAnimator title10ButtonAnimator;
        public BGMPlayer bgmPlayer;

        public float animationTimeAfterWaitTime;

        public TitleCanvasFader titleCanvasFader;

        public void Call()
        {
            StartCoroutine(_Call());
        }

        private IEnumerator _Call()
        {
            float animationTime = 1.0f;
            title10ButtonSound.SoundSEPushButton();
            title10ButtonAnimator.AnimatePushButton(animationTime);
            bgmPlayer.StopBGM();
            yield return new WaitForSeconds(animationTimeAfterWaitTime);

            float fadeOutTime = 1.0f;
            titleCanvasFader.FadeOut(fadeOutTime);
            yield return new WaitForSeconds(fadeOutTime);
        }
    }
}

実行結果

www.youtube.com

感想

タイトル画面のフェードアウトを実装。
6日かけてようやくタイトル画面が模写できた。
…1週間ゲームジャムなのに…。

しかし、今のオブジェクト同士で直接メッセージをやりとりする方法だと、タイトルにフェードインを指示する処理と、フェードアウトを指示する処理をまったく別の場所に書くことになってしまい気持ち悪い。

やっぱり元のプロジェクトのようにGameControllerみたいなクラスは必要だなと思った。
ちょっと読み解いてあらためて設計を見直してみよう。

カロリーメイトください。

今日のunityroom

おやすみ