Siv3Dを試してみた【C++,Visual Studio】

twitterで以下のようなものが流れていたので自分でもやってみました (サンプルコードを動かしただけなので,特に何もしてません) (随時追加予定)

インストール等

siv3d.github.io

こちらを参考にすればうまくいくと思います

実行画面

f:id:ayousanz:20200903123127p:plain

ボタンを押したときにマウスのある所にアイコンを移動させる

実際の動き

f:id:ayousanz:20200903124854g:plain

Code

// 猫のテクスチャを用意
    const Texture cat(Emoji(U"🐈"));
    const Texture temp(Emoji(U"🐶"));

    // 猫の座標
    Vec2 catPos(640, 450);
    Vec2 dogPos(353, 242);

    while (System::Update())
    {
        // テキストを画面の中心に描く
        font(U"Hello, Siv3D!🐣").drawAt(Scene::Center(), Palette::Black);

        // 大きさをアニメーションさせて猫を表示する
        cat.resized(100 + Periodic::Sine0_1(1s) * 20).drawAt(catPos);
        temp.resized(100 + Periodic::Sine0_1(1s) * 20).drawAt(dogPos);

        // マウスカーソルに追従する半透明の赤い円を描く
        Circle(Cursor::Pos(), 40).draw(ColorF(1, 0, 0, 0.5));

        // [A] キーが押されたら
        if (KeyA.down())
        {
            // Hello とデバッグ表示する
            Print << U"Hello!";
        }

        // ボタンが押されたら
        if (SimpleGUI::Button(U"Move the cat", Vec2(600, 20)))
        {
            // 猫の座標を画面内のランダムな位置に移動する
            catPos = RandomVec2(Scene::Rect());
        }
        if (KeyB.down()) {
            cout << "hello" << endl;
            
            dogPos = Cursor::Pos();
        }
    }

Sive3Dからツイートする

ツイート画面

Code

# include <Siv3D.hpp>

void Main()
{
    const String text = U"Hello, Siv3D! #Siv3D";

    while (System::Update())
    {
        if (SimpleGUI::Button(U"Tweet", Vec2(20, 20)))
        {
            // text をつぶやくツイート投稿画面を開く
            Twitter::OpenTweetWindow(text);
        }
    }
}

引用元 siv3d.github.io

アニメーションを任意のタイミングで開始する【Unity】

今回は敵からプレイヤーに向かって火の玉を発射するものを作成してみました 火の玉がせいせいされたあとにプレイヤーに当たってからアニメーションを開始したかったのでメモついでに記録します

成果

f:id:ka1357amnbpdr:20200902184042g:plain

ゲーム公開

unityroom.com

実装方法

  1. 生成した後にAnimatorからアニメーションの開始をoffにします
gameobject.GetComponent<Animator>().enabled = false;

2.  任意のタイミングでアニメーションを開始します ここでは,プレイヤーに当たったときにアニメーションを開始しています

_animator.enabled = true;
_animator.Play("Base Layer.explosion",0,0);

Scripts

生成するscript(敵にアタッチ)

private void OnTriggerEnter2D(Collider2D other)
    {
        if (other.gameObject.CompareTag("Player"))
        {
            Debug.Log("プレイヤーが範囲に入った");
            isInPlayer = true;
            // var t = Instantiate(explosionPrefab, explosionPrefab.transform.position,explosionPrefab.transform.rotation);
            Observable.Interval(TimeSpan.FromSeconds(1f)).Where(_ => isInPlayer).Subscribe(_ =>
            {
                var t = Instantiate(explosionPrefab, parent.transform.position,explosionPrefab.transform.rotation);
                // t.GetComponent<Animator>().enabled = false;
                t.GetComponent<Rigidbody2D>().velocity = other.gameObject.transform.position;
            }).AddTo(this);
        }
    }

火の玉にアタッチ

private void OnTriggerEnter2D(Collider2D other)
    {
        if (other.gameObject.CompareTag("Player"))
        {
            Debug.Log("アニメーションスタート");
            _animator.enabled = true;
            _animator.Play("Base Layer.explosion",0,0);
        }
    }

参考サイト

docs.unity3d.com

qiita.com

Riderのtermial をPowerShell Coreに変更する【Rider,Powshell】

Riderを使っているとterminalでlsが使えないのがちょっと嫌になってくるので,terminalをへんこうしました 

PowerShell Coreのインストール

rh-kimata.hatenablog.com

Riderのインストール

pleiades.io

Riderのターミナルの変更方法

pleiades.io

設定画面から 以下のようにします Power shell 6の実行ファイル名は pwsh.exe だそうです f:id:ka1357amnbpdr:20200828141612p:plain

UnityでVRを実行しても動かなくなったときに見る項目【Oculus Rift S,Quest】

なぜか急にVRの開発をやっていてUnity editor上で実行しても映らなくなってしまってびっくりしたのでメモとして残しておきます ほぼ自分のメモ用になります

原因

原因としてかんがえられるのは,Unity 2018 -> 2019にupgradeしたことによるXR plug-inの扱いが変わったからだと思っています

解決方法

framesynthesis.jp

こちらのサイトを参考に以下のことを試してみる

Windows > Package を開いて、XR Plugin Management パッケージをインストールする

  1. Edit > Project Settings > XR Plug-in Management を開いて「Oculus」にチェックを入れる(これによって Oculus XR Plugin パッケージがインストールされる)
  2. そのまま XR Plug-in Management のタブを PC, Mac and Linux Standalone settings に切り替えて、そちらでも「Oculus」にチェックを入れる(これでエディタで VR モードで再生できるようになります)
  3. 再度 Window > Package を開き、Oculus XR Plugin パッケージの項目を左の矢印で開いて 1.4.0 に更新する(Oculus Integration 18.0 以降で必要になります。Unity 2019.4.7f1 以降ではデフォルトで 1.4.0 がインストールされます)

twitter連携のチャットアプリの作成(ログインしていないユーザーでも回覧だけできるようにする) #2

実装したいこと

  • ログインしていないユーザーでも見るだけはできるようにする

修正点

databaseのrulesの書き換え

{
  "rules": {
    ".read": true,
    ".write": false,
    "message": {
      ".write": "auth != null"
    }
  }
}

Vue.jsの修正

認証できているユーザーだけで表示するようにしているので,誰でも表示するようにコードを書き換える

      ref_message.limitToLast(10).on('child_added', this.childAdded)
      // if (user) {
      //   this.chat = []
      //   // message に変更があったときのハンドラを登録
      //   ref_message.limitToLast(10).on('child_added', this.childAdded)
      // } else {
      //   // message に変更があったときのハンドラを解除
      //   ref_message.limitToLast(10).off('child_added', this.childAdded)
      // }

前回

ayousan.hatenablog.com

次回

twitter連携のチャットアプリの作成(エラー解消のメモ)#1

こんな感じのものができました f:id:ka1357amnbpdr:20200729214845p:plain (以下のサイトからほぼ変えていませんです)

参考サイト

cr-vue.mio3io.com

CSSはこちら

起きたエラーと解決サイト

/%PUBLIC_URL%/favicon.ico:1 Failed to load resource: the server responded with a status of 400 ()

qiita.com

その他

norm-nois.com

次回

ayousan.hatenablog.com

Dockerで環境を統一する? #1

discord.pyやTkinterを使ったpythonの開発をやっている中で別のPCで同じ環境を構築するのがたいへんだと感じます そこで,ちょっとDockerで環境を作成してみたいと思います(全く分かっていないため,dockerから学ばないといけないですが)

Dockerとは?

ここらへんがわかりやすいと感じました(初心者目線) 動画などは1.5倍などで見るといいかもです

www.youtube.com

記事での説明はこちら

qiita.com

導入などの参考サイトはこちら

qiita.com

Dockerをインストールする

DockerにはDocker hubのがあり,GUIで操作できるそうなのでこちらをインストールしてみました

DockerのimageをPullする?

githubみたいな感じで,世界中の人がいろいろなものを公開しているみたいなのでそれらをpullしてみます

とりあえずpython 3.8をPullしてみます

docker pull python:3.8

pullをしたimageの確認

pullをしたimageを確認します

docker image ls

f:id:ka1357amnbpdr:20200613032120p:plain

立ち上げてみる

CLIからだとうまくいかなかったので,DockerのGUIから起動してみました

f:id:ka1357amnbpdr:20200613032608p:plain

ちゃんとversionが3.8になっています f:id:ka1357amnbpdr:20200613032553p:plain