ねこもなかぶろぐ

ねこもなかのぶろぐです

2022年3月

コントローラーで遊ぶゲームはいつまでもできるのに、キーボードメインのゲームはすぐに疲れてしまいます。このブログも体を酷使していると思う。理由は見当がついていて、机といすの高さが合っていないからです。小学生になってすぐコイズミの6-3-3の学習デスクみたいなものを買ってもらい、今もずっとこの机を使っているのですが、机が高くて80センチ弱あります。最初の授業で、文字を書くときや授業を受けるときの正しい姿勢を図とともに習いました。足の裏を地面にしっかりとつけ、ひざとひじが90度に、というふうに言われるわけですが、机と一緒に買ったいすに座ると、小学生ですから足の裏なんてつくわけがありません。バーカウンターに座るみたいに、ひざは45度ぐらいまでまげて、かかとがいすの支柱に、つま先がつま先置きに付くような姿勢で机に座っていました。当然長い間座れるわけもなく、落ち着いて椅子に座って長時間何かをした記憶がありません。机とセットで買ったので、椅子だけ買いなおすという発想に至るまでが長くて、新しいのに初めて買い換えたのは高校のときでした。ロフトに行って買ったのですが、机の高さを測らずに買ったので、椅子が低すぎて10分もすると腰が痛くなってしまい失敗。その後も背筋が伸びるという足を広げて座る背もたれのない椅子、あえてひざを曲げた状態で座る椅子など試しましたが、机が高くて椅子が低いので肘を机に置こうとすると肩より肘が前に出てしまい、とてもじゃないけどずっと作業できません。結局今は、ゲーミングチェアにクッションを2つ重ねて座面のかさを上げて座っているのですが、根本的な解決になっていません。机を変えるのはめんどくさいから、引っ越しでもない限りこのままな気がします。(2022年3月18日)
 
新型コロナウイルス感染症が毎日のニュースになったときに、朝日新聞が新型コロナ関連の記事のアイキャッチ?に紫を基調としたウイルスの画像を用いていました。トピックに専用のアイキャッチが用いられるようになるとそれまで速報だったニュースが日常になっていく感があります。ロシアがウクライナに侵攻してからだいたい2週間ぐらいなります。2月21日にプーチンが開いた安全保障会議で、ウクライナ東部の親ロシア派の独立承認を確認する様子をテレビで見ました。「独立承認」を「ロシア併合」と口を滑らせたように答えるロシア高官が普段の退屈なニュースのなかでは珍しくて印象に残っています。侵攻が始まったのはそれから3日後のことだったのでした。その時にはまだ今ほどあわただしい様子ではなかったのに。NHKが25日以降、ロシアのウクライナへの軍事侵攻の様子を毎日随時更新し続けているのでそれを見ています。アプリで見ると、それまで画面左上のトップ記事バナーは新型コロナだったのですが、ウクライナ侵攻に変わっていました。毎日更新のアイキャッチも、左に「ロシア改行軍事侵攻」右にプーチンの顔写真、下に「日付(曜日)の動き」とあります。記事も2週間分あるわけですから、14人のプーチンがこちらをみているように感じます。下がった口角、うっすい眉毛、後退した白髪で、くぼんだ目をして顔を右に傾けこちらを見ている顔写真です。プーチンはもうお金も権力もたくさんあるのだから、分相応に生きて、いたずらに人を殺すようなことはやめてほしいと思いますが、知らないだけで今までもたくさん人を殺してきたのかもしれないですね。もし自分が同じ立場だったらどうするかな。プーチンでも、ウクライナの人たちでも。ロシアの人たちでも。(2022年3月9日)
 
 
辛い食べ物が好きだという自覚があります。高校の近くの中国人がいた中華料理屋の汁なし担々麺が辛くておいしくて、一時期は週一で通っていました。冷やし中華みたいなもちもちとした黄色い麺に、辛いけどうまみのあるたれ、甘辛なひき肉、甘味要員で食感が楽しいカシューナッツで、毎回汗を流しながら完食してました。しばらくしたらつぶれてしまい随分悲しかったです。韓国に行ったときに、ホームステイ先のお母さんが夜食に用意してくれた時にプルダックポックンミョン(불닭볶음면)に出会いました。一口目はおいしい麺なのですが、すぐに舌いっぱいに辛み成分が侵してきて、顔全体で辛みに耐えることを強いられます。中太でもちもちした麺に辛いソースが良く絡まるので、食べているとき中ずっとよだれがとまりません。早く食べ終わりたい、もう二度と食べるものかと思いながら完食しても、次の日にはまた食べたい気持ちが沸き起こってくるから不思議です。普通の辛さのほかに、チーズ味・カルボナーラ味がありますが、辛くしたくないならソースの量を減らすか、普通のやつに後入れでチーズや野菜を入れたほうがおいしいと思います。さらに辛さを求める人は激辛味もありますが、これはまだ食べたことがありません。普通ので十分苦しいよ。ソースだけで別売りしているものを写真で見かけ、先日カルディにあったので買っちゃいました。家族で食べてるのが私だけなので、野菜炒めにかけたり、ポトフやミネストローネに混ぜたりして消費してますが、一向に減らないね。お肉の下味とかにするのもありなんだろうけど、それも結局辛いから一人で全部食べることになりそうです。(2022年3月7日)
 
お風呂で、口にシャワーをあててすすいでいるときに、口の中に指を入れ、歯と歯茎を指の腹で確かめることをよくやります。歯のつるつるした硬さと、歯と歯茎の境目、歯茎の反発のある肉感を感じその指で、まだ歯を磨いていない歯の表面を爪でカリカリとかいて、ついてきた歯垢を見て歯を磨かなきゃと思います。時たま今日みたいに、爪でかくときに歯ではなく歯茎をひっかいてしまうことがあります。とはいえ歯茎にちょっと爪を立ててしまった程度でしたが。以前、親知らず近くの歯茎を同じように爪でひっかいたら、数日後ぐらぐら腫れてきて、いよいよ親知らずが抜けるかと思っていたら、その傷からばい菌が入って膿んでいただけだったことがあり(あの時は結構痛かった)、今回もそうなってしまうのかもと思うといやだなぁと思います。前回は痛みの原因が不明だったから怖かったけど、今回痛くなっても原因がわかっているからその点は安心できそうです。本当は歯を磨いた後に消毒するべきなんだけど、ひっかいてすぐの時って全く痛くないし、ひっかいたことすら忘れているからからそこまで気が回らないんだよね。そもそも、この風呂場での癖をやめたらいいという話ではあるんだけど、歯の並びを確かめるのがどうにもやめられなくて。私は上の奥歯が二本とも外側に傾いて生えているので、前歯から奥に指をなぞっていくと奥歯で指がぶつかって止まるんです。上の歯だし奥歯だし、矯正するほどでもないのですが。この二本のおかげで歯磨きするときにはいつもガリガリ君ばりに口を横に開く必要があります。(2022年3月2日)

【Unity】時間割アプリ9日目

ここまでのまとめです


f:id:nekomonaka:20191001211847p:plain
ヒエラルキーはこんな感じになりました


空のオブジェクト TimeTableCont、Imput(Prefab)、OneTimeTable(Prefab)に以下のスクリプトをそれぞれアタッチしました。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;


public class TimeTableCont : MonoBehaviour
{

    public TMP_Dropdown dropdown_Jigen, dropdown_Days;
    public GridLayoutGroup gridLayoutGroup;

    public GameObject OttOttHolder;
    private GameObject ImputField;
    private GameObject Setting;
    private GameObject nowSetTimeTable;
    public GameObject TimeTableHolder;

    private GameObject hoge;

    void Awake()
    {
        ImputField = GameObject.Find("Imput");
        Setting = GameObject.Find("Setting");

        nowSetTimeTable = null;
    }

    private void Start()
    {
        ImputField.SetActive(false);
        Setting.SetActive(false);
    }

    public void SettingActive()
    {
        Setting.SetActive(true);
    }

    public void SettingNotActive()
    {
        Setting.SetActive(false);
    }

    public void ImputFieldActive()
    {
        ImputField.SetActive(true);
    }

    public void ImputFieldNotActive()
    {
        ImputField.SetActive(false);
    }

    public GameObject GetImputField()
    {
        return ImputField;
    }
    public void setTimetable(string name)
    {
        nowSetTimeTable = GameObject.Find(name);
    }
    public GameObject getOneTimeTable()
    {
        return nowSetTimeTable;
    }

    public void ResetJikanwari()
    {
        //Debug.Log(PlayerPrefs.GetString("OneTimeTable (4)Name_Room"));
        PlayerPrefs.DeleteAll();
        //Application.Quit();
    }

    public void DeleteAllTimeTable(string Tagname)
    {
        GameObject[] gameObjects = GameObject.FindGameObjectsWithTag(Tagname);
        foreach (var g in gameObjects)
        {
            Destroy(g);
            Debug.Log("destroy");
        }
    }

    public int GetDropDownValue_Jigen()
    {
        Debug.Log(dropdown_Jigen.value);
        return dropdown_Jigen.value + 1;
    }

    public int GetDropDownValue_Days()
    {
        switch (dropdown_Days.value)
        {
            case 0:
                return 5;
            case 1:
                return 6;
            default:
                return 7;
        }
    }




    public void SettingSettingTouch()
    {
        /* 時間割をとりあえず全て削除する
            曜日を読み取る
            時限を読み取る
            glgのどっちかを揃える
            曜日かける時間分のコマを作る
         */
        DeleteAllTimeTable("OneTimeTable");
        //GetDropDownValue_Jigen();

        gridLayoutGroup.constraintCount = GetDropDownValue_Days();

        for (int i = 0; i < (GetDropDownValue_Days() * GetDropDownValue_Jigen()); i++)
        {
            hoge = Instantiate(Ott);
            hoge.name = hoge.name + i;
            hoge.transform.parent = OttHolder.transform;
        }

        SettingNotActive();
    }

}

Imputにつける

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;

public class ImputCont : MonoBehaviour
{
    private TimeTableCont TTCont;
    private GameObject ThisOneTimeTable,ThisOTTSub,ThisOTTRoom;
    public TextMeshProUGUI ImputSub,ImputRoom;
    private TextMeshProUGUI TTSub,TTRoom;
    void Start()
    {
        TTCont = GameObject.Find("TimeTableCont").GetComponent<TimeTableCont>();
    }

    public void IfTouch()
    {
        ThisOneTimeTableGameObject.Find(TTCont.getOneTimeTable().name);
        Debug.Log(ThisOneTimeTable.name);


        ThisOTTSub=ThisOneTimeTable.transform.Find("Name_Subject").gameObject;
        TTSub=ThisOTTSub.GetComponent<TextMeshProUGUI>();

        ThisOTTRoom=ThisOneTimeTable.transform.Find("Field_Room").transform.Find("Name_Room").gameObject;
        TTRoom=ThisOTTRoom.GetComponent<TextMeshProUGUI>();

        TTSub.text="講義名";
        if(ImputSub!=null){
            TTSub.text=ImputSub.text;
            //Rewrite(TTSub.text,ImputSub.text);
            Setdata(ThisOneTimeTable.name,ThisOTTSub.name,TTSub);            
        }
        TTRoom.text="教室名";
        if(ImputRoom!=null){
            TTRoom.text=ImputRoom.text;
            Setdata(ThisOneTimeTable.name,ThisOTTRoom.name,TTRoom);            
        }
        ImputRoom.text=string.Empty;
        ImputSub.text=string.Empty;


        Debug.Log(PlayerPrefs.GetString(ThisOneTimeTable.name+ThisOTTRoom.name,"教室名"));
        Debug.Log(ThisOneTimeTable.name+ThisOTTRoom.name);
        Debug.Log(PlayerPrefs.GetString(ThisOneTimeTable.name,"nanika"));
        PlayerPrefs.Save();
        TTCont.ImputFieldNotActive();
    }

    public void Setdata(string parentName,string childName,TextMeshProUGUI tmp){
        var kye=parentName+childName;
        //Debug.Log(kye+"key");
        var value=tmp.text;
        PlayerPrefs.SetString(kye,value);
    }
   
    public string GetData(string key,string deforuto){
       return PlayerPrefs.GetString(key,deforuto);
    }
}

OneTimeTableにつける

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;

public class OneTimeTableCont : MonoBehaviour
{
    private TimeTableCont timeTableCont;
    private ImputCont imputCont;
    public GameObject ImputContGM;
    public TextMeshProUGUI Name_SubjectName_Room;
    public GameObject GMName_Subject,GMName_Room;
    private void Awake() {
        //ImputContGM=GameObject.Find("Imput");
    }
    void Start()
    {

        timeTableCont = GameObject.Find("TimeTableCont").GetComponent<TimeTableCont>();
        imputCont = ImputContGM.GetComponent<ImputCont>();
        //保存されているものがあるならそれにする、ないならそれぞれのにする
        Name_Subject.text=imputCont.GetData(getName()+"Name_Subject","");
        Name_Room.text=imputCont.GetData(getName()+"Name_Room","");
        
    }

    // ボタンを押された時の処理、ダイアログを表示する
    public void ifTouch()
    {
        timeTableCont.ImputFieldActive();
        timeTableCont.setTimetable(getName());
    }

    private string getName()
    {
        return this.gameObject.name;
    }

    private string getSubname()
    {
        return Name_Subject.text;
    }

    private string getRoomname()
    {
        return Name_Room.text;
    }
}


ねこもなか

【Unity】時間割アプリ1日目

 

AppleStoreに自分にぴったりな時間割アプリがなぁぁぁぁぁぁい!!!

ないなら自分で作りましょう。時間割アプリ1日目。今回はiPhoneX用のアプリにします。

UnityとXcodeはインストールし初期設定を終えている前提で話を進めます。

iOSアプリビルドに必要なTeam?の設定も済んでいる前提で話を進めます。

2Dで空のプロジェクトを作りプラットフォームを変更しましょう。

f:id:nekomonaka:20190917051748p:plain

BuildSettingでPlatformをiOSにします

f:id:nekomonaka:20190917052540p:plain

ProjectSettingからCompanyNameとProductNameを変更しましょう

言い忘れましたけど、IdentificationのBundle Identifierも変更しておきます。

f:id:nekomonaka:20190917052701p:plain

Iconも変えちゃいましょう(順番がおかしい気もするけど)

見た目が大事。形から入るタイプ。IconはiPhoneAdobe Compアプリで作りました。

このかわいいステノちゃんは

twitter.com

さんが作成されたものを無断で改変&使用しています。すみません。よろしくお願いします。

 

f:id:nekomonaka:20190917053231p:plain

適当にButtonを配置します、GameViewでiPhoneXの画面モードに変更しておきます

f:id:nekomonaka:20190917053546p:plain

とりあえずこれでBuildしちゃいましょう。やってる感を出すのは大事。普通にBuildAndRunではTeamでエラーになるので冷静に登録済みのTeamに設定し直し実行し直します

f:id:nekomonaka:20190917053951j:plain

無事にビルドできました!やったね

きょうはここまで。

このシリーズ続けられる気がしないけど頑張ります。とりあえず今後の構想だけ。

  • 時間割名、教室名、講師名を記録できるテキストボックス機構
  • ボックスを並べる機構
  • 複数の時間割を作る機構
  • 時間割のスクショを共有できる機構

スタイリッシュさは置いておいて、時間割アプリっぽくなるようにできたらいいね;)

 

ねこもなか

 

 

 

【VR】謎解きホラースクールに行ってきたレポ

これが500円

2019年8月7日 仙台フォーラス8階 特設会場でやってた「謎解きホラースクール 360度1分(?)の脱出」に行ってきました。

 

ポスター

ポスター原

ポスター

ポスター解像度18

ポスター

ポスター解像度36

画像添付テストも兼ねてたくさん画像を貼りました。

VRに興味があったので行くことにしました。オキュラスを使っているようでした。

360度と分の間の縦の棒はなんなのか。1なのか/なのか。「『謎』」は深まります。そしてゾンビが出るようです。がっこうぐらしみたいな設定ですね。

バイスが「現実とVRが融合した 新感覚VRホラーアトラクション!!」としゃべっているのもジワる。

現実とVRが融合したならそれはVRではなくXRなのでは。

 

500円を渡してチケットを受け取ります。

チケットの画像

コピー用紙かな

入学許可証(¥500) 入学するのに500円かかるらしい。入学なのに入場を断られる場合があるらしい。当日限り有効と書いてあって日付がないのも不思議ですね。

催事場に仕切りがあって机と黒板が並んでいます。

教室の画像

教室 雰囲気づくりのため蛍光灯は消えていた デパートの館内放送は聞こえるぞ


なるほど、現実でも学校になっているというわけですね。オキュラスが置かれた机が並んでいます。

ポスターその2

ポスターが貼ってあります

そして黒板

ギエ〜

ギエ〜

ギエ〜

 

説明を受けて装着します。

「座って遊んでください。むやみに立ち上がりますと他の生徒さんの迷惑になります。」(生徒という設定なんですね。ふむふむ。生徒は私一人だけでしたが型通りの説明を聞きます。)

 

シーン1

灰色のコンクリートの薄汚い部屋の中にテレビがあります。「画面をクリックすると始まります!」というテロップが点滅しています。

 

シーン2

場所が変わって教室の中。視点は教卓で、謎を解いて脱出せよと書いてあります。

教卓からは黒板と並んだ机と廊下、ロッカーや掃除用具入れが見えます。

机にPCが書いてあるのでそこを調べます。すると「えくつのめんばんさ」と書いてあります。逆から読むと「さんばんめのつくえ」簡単ですね。

三番目の机を調べると鍵を手にします。鍵を教室のドアに使います。

 

シーン3

突然洋館の一室に場面が変わります。コナンの扉をもっと安っぽくした感じでした。

プレイヤーはいつの間にか銃を手にしていました。そして「うー」みたいな音も。

コナンの犯人みたいな全身黒タイツの人が部屋の3方向からゆっくりやってきます。

銃で頭を打つと倒れていきますが、当たり判定が頭の上の方に設定されているようで、脳天を狙っても倒れません。少しずらして当てると倒れていきます。UIには倒した数と残り時間が02:13:23みたいに表示されています。制限時間は3分だったようです。

バシバシ倒していくとTimeUp!になったようで、またシーン1のテレビ画面に戻りました。スコアは73だそうです。ハイスコアだったようです。

感想

結構雑。学校の設定もよくわからなかったし、どうして閉じ込められて謎を解かなくてはいけなくなったのかわかりませんでした。全身タイツ黒男無限湧きと戦う理由もよくわかりませんでした。当たり判定もずれているし、全身タイツだし、ゾンビのテクスチャも用意できなかったのかな。

黒板のギエ〜は手作り感あって好きです。

3分以内にゾンビを倒し学校を脱出するのが目的なはずが、倒したゾンビの数を競うスコアゲーになっていたのも趣がありますね。

現実とVRの融合とありますが、HMD(ヘッドマウントディスプレイ)装着中はVRの世界だけしか堪能できませんで、融合している感じは特になかったです。

机と椅子と黒板が若干の現実要素。

これらを借りるのに予算を使うならアプリの方にお金をもっとかけた方がいいと思いました。

そして私としてはこういう荒削りのアプリでも一人500円吸い上げることができて羨ましいと思いました。

何事もまずは完成させることが大事

ちゃんとした記事を書き上げた自分を褒めてあげたい。 おしまい。

 

ねこもなか

 

 

最初のお話

ねこもなかの画像

ねこがもなかに挟まれている

はい

ブログのコツ

  1. 才能
  2. 根気
  3. 努力

あなたがブログを読んでいるとき ぶろぐもなか

 出力して運気を上げて宝くじを当てよう

ここだけの話

【無理すぎるヨガインストラクター】

「はい 吸って〜 吐いて〜 吸いながら〜吐いて〜」

 

ねこもなか