3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

unity1weekに参加して得た知見

Last updated at Posted at 2020-08-16

はじめに

VTuberとして初めてunity1weekに参加しました。
ゲームを開発している時に得た知見2つについて書きたいと思います。

開発の思い出話 今回のテーマは「ふえる」でした。最初は「ふるえる」と読み間違えました。 初日に大枠のコンセプトを決め、cubeなどでコンセプトの動作を検証しました。 2日目は初日に作ったロジックだとうまくいかないことが判明したので、1から作り直しました。 3、4日目はゴリゴリと実装しました。ほとんどがUniRxの使い方を調べてた気が。 navmeshは初めて使うので、当たり判定などについても調べて実装しました。 ググれば大抵のことは分かったので、良かったです。 ただ、情報が古いこともあったので、そこは注意しました。 5日目でUI以外は完成したと思ったので、unityroomにアップロードして確認しました。 この日から断食してたので、頭が回らなかったです。早めに作ってて良かったなと実感しました。 6日目はUI追加したり、BGMつけたり、ゲームバランス整えたり。 コード書くのは得意なんですが、こーいう細かい調整は不得意ですね。 AIが良きに計らってくれる日を待ってます。 7日目は前の日に思いついたminimapを実装し、紹介動画をyoutubeにあげて、この記事を書いてます。

キー入力が一定時間ないことを検知

「プレイヤーは一定時間キューの入力がないとウエイトモードになる」
という処理をUniRxでやる場合、以下のようなコードを書けばOKです。

this.UpdateAsObservable()
            .Where(_ => Input.anyKeyDown)
            .Timeout(TimeSpan.FromSeconds(0.5)) //0.5秒入力がなかったら、
            .OnErrorRetry((Exception e) => animator.SetBool("isWalk", false)) //アニメーションをOFF
            .Subscribe();

Tweet機能

ゲームのスコアなどTweetさせる機能を入れていたのですが、unityroomで実行すると
「twitter.com で接続が拒否されました。」
というメッセーが出ました。

    void Tweet() {
        string esctext = UnityWebRequest.EscapeURL($"感染率{attak.value}%\n残り時間{remainingTime}秒\n{count}/{number.value}のぬこがお友達になったにゃん(「ФДФ)「");
        string esctag = UnityWebRequest.EscapeURL("unity1week");
        string url = UnityWebRequest.EscapeURL("https://unityroom.com/games/");
        string TweetURL = "https://twitter.com/intent/tweet?text=" + esctext + "&hashtags=" + esctag + "&url=" + url;

        Application.OpenURL(TweetURL);
    }

自分のマシンなら、windowsでもwebglでも動作するのですが、
このApplication.OpenURL(TweetURL)がunityroomのwebglでは動かないみたいです。

以下のように修正して、動くようになりました。

    void Tweet() {
        string esctext = UnityWebRequest.EscapeURL($"感染率{attak.value}%\n残り時間{remainingTime}秒\n{count}/{number.value}のぬこがお友達になったにゃん(「ФДФ)「");
        string esctag = UnityWebRequest.EscapeURL("unity1week");
        string url = UnityWebRequest.EscapeURL("https://unityroom.com/games/");
        string TweetURL = "https://twitter.com/intent/tweet?text=" + esctext + "&hashtags=" + esctag + "&url=" + url;

#if UNITY_WEBGL && !UNITY_EDITOR
        Application.ExternalEval(string.Format("window.open('{0}','_blank')", TweetURL));
#elif UNITY_EDITOR
        System.Diagnostics.Process.Start(TweetURL);
#else
        Application.OpenURL(TweetURL);
#endif
    }

おわりに

今回は「自分のコンセプトを締め切り内で完成させる」を目標としました。
なので、かなり荒削りなゲームになりましたが、無事完成させることはできました(バグはあるかも)。
「ここをこうしたい!」という思いはあったのですが、その部分はコンセプトに影響せず、時間を考えて、バッサリなくしました。

わからないときは、ググって先人の知識をお借りしました。
この記事が、あとに続く人たちの参考になれば幸いです。

あと、UniRxはほんといいです。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?