原カバンは鞄のお店ではありません。

Unityを使ったゲーム制作のあれこれを綴っていきます。

【雑記】脱出ゲーム進捗報告

読み方

みんな大好き"DOTween"の読み方が『ドゥ・トゥイーン 』じゃなくて『ドットゥイーン 』だと知ってショックを受けている皆さんこんにちは。いや、私はこれからもドゥ・トゥイーンと呼ぶけども。

 

前々回の記事で青木とと氏の演出処理についてアレコレ私見で書いたら、まさかのご本人にレスを頂いてビックリするやら恐縮するやらで、申し訳ない気持ちにでいっぱいになりました。人の創作物について許可を取らずに詮索する(記事にする)のはご法度ですね、反省します。

 

新ステージ

さて、去年から引き続き製作中の3D脱出ゲームですが、これまで館の中から脱出するゲームと言いながら殆ど廊下が舞台となるステージばかりだったのですが、ここに来てようやく部屋らしい部屋が出来上がりました。

 

ドン!

f:id:Karvan:20210202202024p:plain

 

きっとこれを見た方は『ありがちでシンプルな部屋だなぁ』とか思われるでしょう。しかしこれでも作成するのに2~3週間かかりました。

 まず、部屋の中に何を配置するかで悩む。書斎をイメージしているので机と椅子を置くことは決まっているけど、それだけだとスカスカで監獄みたいになっちゃうので棚を置いたり、暖炉を置いたり、カーペットを敷いたり・・・と、部屋の空間を埋めるのに一苦労。

さらにインテリアをどうするかで悩む。リアルな自宅の部屋は壁にポスターも張ってないシンプルな部屋なのでインテリアとか全然知らない。とはいえ、棚の上に何もないのは寂しいし、壁に何もないのは殺風景、何より手抜きに見える。

 

普段、RPGやAVGをプレイしているとこういった『普通の部屋』の家具やインテリアやらに注目することなんてないのですが、作る側に周ってみると何気ない場所でも作り手の手間がかかっているんだなぁ、という事を実感します。

今回作った部屋でも奥の棚に並んだ家電製品とかキャンドルランプ等々も何を置けば良いか、デザインはどうする、か相当頭を悩ませた結果の成果物です。まぁ、プレイされる方が注目することはないと思いますが。

f:id:Karvan:20210202202210p:plain

 

新パズル

脱出ゲームなので当然ながら新しいパズルを配置しています。

今回はこの部屋に入る前に一つ

f:id:Karvan:20210202202651g:plain

 

部屋の中に一つ、作成しました。

f:id:Karvan:20210202202752g:plain

 

これで完成というわけではなくて、この部屋ではトランプがギミックとして登場しますが、現在想定しているストーリー上ではトランプは絡んでこないので、ちょっとストーリーを変更する必要があったり、また、他にもパズルを設置する予定ですが未だ手つかずだったりと、アレコレと作業が残っています。

f:id:Karvan:20210202202852g:plain

未完成のパズル

 

悩み事

講談社のゲームラボに落選した時も漏らしたのですが、テストプレイをしてれる第三者がいないことが最近の大きな悩み事です。

製作の方はもう中盤辺りに来ているのですが、テストプレイヤー(デバッガーではない)がいないので、プレイヤーがこちらの狙い通りに動いてくれるかどうか、パズルのレベルデザインが適正か(難しすぎないか)等の客観的な評価が全く見えない状態です。
他のインディゲーム開発者はどうしているのでしょうかね?どこかのサイトやSNSで募集しているのでしょうか?

 

このゲームの序盤部分をunityroomに公開していますが、ありがたい事に批判的なコメントは書き込まれていません。

ただ、こういった開発者コミュニティのコメント欄には当たり障りのない内容が書かれる事が多く、プレイ上の問題点が指摘される事はあまりないので客観的な評価は見えないままです。

Twitterで募集してみようかなぁ、応募なさそうだけど。

 

【Unity】アセット紹介:Minimalist - Lowpoly Flat/Gradient Shader

窓の外に

会社で自席から見える街頭のディスプレイ広告にラピュタの廉価版みたいなアニメ映画のCMが延々と流れていてうんざりな皆さんこんにちは。もう三週間ぐらいずっと同じCMが流れている。よっぽどお金があるんですね。

 

アバターアイコン変更

このブログを立ち上げてからずっと使用していたアバターアイコンを変更しました。イラストとか描けないので作成中のゲームのスクリーンショットを加工して仕上げました。

f:id:Karvan:20210126214806p:plain

アイコンが変わっただけなのですが、なんだか『気分一新』した心持になれますね。

 

色付けシェーダー

テクスチャを必要とせずに3Dモデルに色付けることが出来る色付けシェーダーは、私のようなBlender等を使ってオリジナルな3Dモデルを作ることができない開発者にはありがたいアセットです。

 

Unityのアセットストアにはこのようなシェーダーが数々売られていますが、つい最近、その中でも評判がよさそうな色付けシェーダーを購入しました。

assetstore.unity.com

 

使い方は他の色付けシェーダーと同様、3Dモデルの上下左右前後それぞれの面に色を付けていく形になります。

このシェーダーでは各面の方向をグローバル座標を基準とするか、ローカル座標を基準とするかでシェーダーを使い分ける必要があります

f:id:Karvan:20210126215323g:plain

Standardがグローバル座標基準、LocalSpaceがローカル座標基準です。

グローバル座標を基準とした場合、上の動画のように回転するオブジェクトに適用すると、各方向から光を当てられたような表現となりますが、ローカル座標を基準とした場合は回転しても指定された色の位置は変わりません。

 

各六面すべての面に色を指定する必要がない場合はColor Correctionオプションでオブジェクト全体に色を設定することもできます。

f:id:Karvan:20210126215717p:plain

ただこのオプションはStandardシェーダーのEmissionのように、オブジェクトがその色を発光してるような指定となるので、Custom Shadingで各面に指定された色はこのオプションで指定された色の影響を受けることになります。

f:id:Karvan:20210126215617g:plain

 

 独自のオプション

上記の内容は他の色付けシェーダーでも同様の機能かと思うのですが、このシェーダーでは以下のような表現も指定することが出来ます。

 

f:id:Karvan:20210126215835g:plain

残念ながらOutlineの指定ができませんが、ShadowやFadeについてはかなり使い勝手が良いかと思います。Shadowは色を指定できるし。

 

また、特徴的なのはAO(ambient occlusion)の指定が行えることで、3DモデルにライトマップをBakeしたテクスチャがあればそれを使ってモデルに陰影をつけることが出来ます。

f:id:Karvan:20210126215942p:plain

色付けシェーダーは基本的に各面にグラデーションを掛けて立体感をだしますが、このAOが指定できるとさらに立体的な表現をすることができます。

f:id:Karvan:20210126220006p:plain

 

ローポリ系のゲームを作る場合にはかなり有用なシェーダではないでしょうか。

 

【Unity】TextMeshProでクリックされた文字列を取得する

緊急事態宣言

もはやコロナ慣れしてしまって緊急事態宣言だと言われても呑気に街へ出かけている皆さんこんにちは。私の住んでいる福岡県でも宣言が出されましたが、私は未だに在宅勤務にならず朝夕の通勤電車に乗っています。何故だろう?そりゃ罰則規定も考慮されますわ、ってかテレワーク推奨しない企業にも罰則つけて欲しい。

 

作り手として

微力ながらもゲームクリエータを志しているので、unityroomに投稿されているような個人製作のゲームを目にすると、純粋にゲームを楽しんだり、発想の意外さに驚嘆したりする前に、「このエフェクトは自作なのかな?アセットなのかな?」とか「この処理はどうやって作っているんだろう?」とか作り手としての目線でゲームを読み解こうとします。

無論、気になった部分全てを分析できるわけないのですが、「こうやっているかな?」とアレコレ夢想したり実際に作ってみたりするのは、勉強になるし楽しい作業です。

 

つい先日のunity1weekでも青木とと氏の「夢の中で、あなたと」というゲームについて非常に興味を惹かれました。

unityroom.com

テキスト形式の脱出ゲームとのことで、ゲーム画面には状況を説明するテキスト文だけが表示されます。

ユーザがテキスト文中のキーワードをクリックすると、そのキーワードが欄外に抽出されて後の場面でそれ文言をアイテムとして使用することができます。例えば 

「僕は机の引き出しからカッターナイフを取り出した」

という文章の"カッターナイフ"という部分をクリックすると、"カッターナイフ"というワードが取り出されて欄外に表示されます。その後に

「ガムテープで蓋をされた段ボールを見つけた」

という文章が表示されたら、先ほどの"カッターナイフ"を"段ボール"の上にドラッグすると

「カッターナイフで段ボールを開けると中にはドアの鍵が入っていた」

という文章が表示され、場面が展開していきます。ちょっと文章では伝わりにくいと思うので、上のリンクから是非プレイしてみてください。

 

とてもユニークなゲームシステムでunity1weekでも総合7位を勝ち取っているのですが、私的にはテキスト文中から一部ワードを切り出して欄外へ出す方法が非常に気になる。ってか私もアレやってみたい、作ってみたい!というわけで同じような事が出来ないか方法を探ってみました。

 

TextMeshProのLinkタグを利用する

TextMeshProではテキスト内にリッチテキストタグを使用することが出来ます。

 主にColorやSize等のタグでテキストのレイアウト、見た目を変更する際に利用されていると思うのですが、実はLinkタグを使ってハイパーリンクを張ることもできます

 ただし、ハイパーリンクを利用するにはスクリプトでクリックされた箇所のハイパーリンク(URL)を取得すしてApplication.OpenURL等でリンク先を表示する、という処理を作りこむ必要があります。

using TMPro;
using UnityEngine;
using UnityEngine.EventSystems;

[RequireComponent( typeof( TextMeshProUGUI ) )]
public class Example : MonoBehaviour, IPointerClickHandler
{
    public void OnPointerClick( PointerEventData e )
    {
        TextMeshProUGUI text = GetComponent<TextMeshProUGUI>();
        Vector3 pos = Input.mousePosition;
        Camera camera = canvas.renderMode == RenderMode.ScreenSpaceOverlay ? null : canvas.worldCamera;
        int index = TMP_TextUtilities.FindIntersectingLink( text, pos, camera );

        if ( index == -1 ) return;

        // リンクを取得
        TMP_LinkInfo linkInfo = text.textInfo.linkInfo[ index ];
        string url = linkInfo.GetLinkID();
        
        // リンク先を表示
        Application.OpenURL( url );
    }
}

上記のスクリプトをTextMeshProのオブジェクトにアタッチして使用します。

注意事項としてTextMeshProがあるCanvasはRenderModeが「Screen Space - Camera」か「World Space」である必要があります

 

例えば

Clickで<link="https://www.karvan1230.com/">リンク</link>をとりだす

という文章について上記のスクリプトを利用すると、

f:id:Karvan:20210119215811g:plain

Linkタグで囲まれたテキスト部分(”リンク”)をクリックするとLinkタグに設定されたURLを取得することができます。

 

Linkタグは一文中に幾つも設定できるので、例えば以下のように

Clickで<link="https://www.karvan1230.com/">リンク</link>をとりだす。わからないので<link="https://www.google.co.jp/">Google</link>でしらべる。

と、複数のLinkタグが設定されている場合でも、それぞれに応じたURLを取得することができます。

f:id:Karvan:20210119220043g:plain

 つまり、これを利用すればテキスト文中からクリックされた箇所のワードを取り出して後の処理に利用することも可能だ、と言う事です。

 

クリック位置を取得する

先ほどの処理でクリックした文言を判定することが出来るので、後はそのワードを欄外へ移動すれば良いわけです。

移動用のTextMeshProをあらかじめ用意しておいて、それをクリックした位置から欄外へ移動させます。

 

uGUIでクリックした位置はRectTransformUtilityのScreenPointToLocalPointInRectangleを使うことでCanvas内のローカル位置を取得することができます。

 先ほどのOnPointerClick関数内に以下のコードを追加します。

 // クリック位置に対応するRectTransformのlocalPositionを計算する
 RectTransform rectTransform = canvas.GetComponent<RectTransform>
 var localPoint = Vector2.zero;
 RectTransformUtility.ScreenPointToLocalPointInRectangle(rectTransform, pos, camera, out localPoint);

取得したlocalPointを移動用のTextMeshPro(のRectTranform)のlocalPositionに設定してDOTween等で移動を行います。

 

f:id:Karvan:20210119220604g:plain

こんな感じ。ちなみに上の動画ではクリックされたLinkタブの箇所にColorタブを追加して色を変更する処理も行っています。

 

IPointerClickHandlerとか今回始めて知りました。やっぱり賢者の方が作ったゲームは色々と勉強になりますね。

 

【Unity】複数のアニメーションをLayerを使ってブレンドする

大寒波

数年に一度の大寒波でこの三連休は一歩も外へ出ていない皆さんこんにちは。子供頃は雪が降ると大はしゃぎだったのに、大人になると憂鬱で仕方ないのは何故でしょう?

 

結果発表

unity1weekの評価期間も終わり、私の作品についても結果が発表されました。

相変わらず各指標が3点台という箸にも棒にも掛からぬ結果になったわけですが、振り返るともっと演出に力を入れたらよかったなぁとか、最初のステージをもっと簡素にしてボスを早めに登場するようにしたら良かったなぁとか、色々と反省点が思い浮かびます。

unity1weekのゲームを実況している方の配信を見たのですが、私のゲームに関しては、かなり簡単だと思っていた最初のステージすら苦戦しており、見せ場のボス戦にも到達できずじまいで終わっていました、こちらの意図通りに操作してもらう難しさを学びましたね。

 

unityroom.com

 

アニメーションを設定する

そんな今回の作品。いわゆるランゲームというやつで、キャラクターが走りながら敵を攻撃しゴールを目指す、という形式なのですが、自機となるキャラクターには「Cyber Girl」というアセットを使用しています。

assetstore.unity.com

このアセットを使用した理由は、unityroomに投稿されているゲームやtwitter等で目にする個人製作のゲームの殆どで主役となるキャラクターには女性が起用されていることに気づいたからです。

ゲーム制作者って圧倒的に男性が多いと思うのですがね、何故か主役が女性のゲームを作っている方が多い気がします。

理由は分かりませんがとりあえず需要があるのだろうと言う事で、元々制作中の脱出ゲームの為に購入していた「Cyber Girl」のモデルを自機とすることにしました。

 

しかし、このアセットはモデル単体のみが販売されているアセットなので、それだけではでくの坊のまま、当然ながら走るとか、攻撃するなんてアニメーションは自分で設定することになります。

 

f:id:Karvan:20210112210955p:plain

 アセットストアから購入した段階のモデル

 

なので、それらのアニメーションの方もアセットストアから購入しました。

プロモーションの動画を見ても滅茶苦茶カッコいい。

assetstore.unity.com

www.youtube.com

 

今回はこのアセットに梱包されている「走る」アニメーションと

f:id:Karvan:20210112211255g:plain

 

「攻撃」アニメーションを先程のCyberGirlのモデルに設定することにしました。

f:id:Karvan:20210112211400g:plain

 

動作をブレンドする

先程の3DモデルにはAnimation TypeとしてHumanoidが設定されているので、通常は設定したいアニメションをAnimtorで設定するだけで使用することが出来るのですが、今回の場合は「走りながら敵を攻撃」したいので「走る」動作と「攻撃」動作をブレンドする必要がありました。

 

こういった場合は「走る」動作をベースに「攻撃」動作を加算して作る方法があります。

まず、Animator ControllerのLayerを「走る」動作、「攻撃」動作それぞれで分けて設定します。

 

f:id:Karvan:20210112211635p:plain

 Base Layerに「走る」動作、Attack Layerに「攻撃」動作を設定します。

その後、Attack Layer側のBlendingに「Additive(加算)」を設定し、Weightで重みを設定します。

 

実際に動かしてみると・・・

f:id:Karvan:20210112211815g:plain

・・・ん~、なんか変。攻撃の動作に走っているときの姿勢が加わっているので前傾姿勢過ぎて攻撃している感がありません。

良く考えると「走る」動作に必要なのは「両足」だけなので、それ以外部分は「攻撃」動作させれば良いことに気づきます。

 

AvatarMask

こんな時はAvatarMaskを使って特定の箇所のボーンの動作を上書きするようにします。

 Avatar MaskはProjectタブで右クリック→Create→Avator Maskで作ることができます。

f:id:Karvan:20210112212110p:plain


Avator Maskでは四肢と頭、胴体それぞについてマスクするか設定できるので、今回は両足をマスクすることにします。

 f:id:Karvan:20210112212135p:plain

 

Attack Layer側のBlendingに「Override(上書)」に変更し、Maskの項目に作成したAvator Maskを設定します。

f:id:Karvan:20210112212201p:plain

 

これで実行すると

f:id:Karvan:20210112212245g:plain

 それっぽい動作をさせることが出来ました。めでたしめでたし。

 

【雑記】Unity1weekがUnity2weekになってしまった話

新年

年末年始は部屋から出ずに2077年のナイトシティで年を越した皆さんこんにちは。外付けSSDで拡張したPS4で遊んでいますが巷で報告されているほどエラー落ちはしませんね。激しい銃撃戦では落ちやすいみたいですが、私はチキンなステルスプレイ中心なので特に問題ありません。

 

Unity1week

年末から年始かけてUnityroomにてUnity1weekが開催されていました。

 unityroom.com

これは文字通り「Unity」を使って「1week(一週間)」で毎回決まったお題に沿ったゲームを作り、互いに評価してもらう、というイベントです。

現在(1/5)は未だ評価期間中で遅延での投稿も可能なので作品が出揃ってはいませんが、今回も440以上の作品が投稿されているようですね。

私も今回参加してアクションゲームを投稿しています。難易度低めとなっているので気軽に楽しめると思います。

 

unityroom.com

ただ、今回の作品については当初の想定以上に制作に時間が掛かり、Unity1weekならぬUnity2weekになってしまいました。

結果として年末年始の休暇は全てこれに取られた形になってしまったのですが、なぜこうなったのか反省も込めて振り返ってみたいと思います。

 

Unity1week開始前(~12/20)

去年からUnity1weekには度々参加しているのですが、毎回私はお題からゲームを考案するのでなく、その時作りたいと思ったゲームをお題に合わせる、という形で作業を進めています。じゃないとモチベーションが持たないので。

 

Unity1week開始前の時期は講談社のゲームクリエイターラボに落ちた直後だったこともあり、二期目の募集があった時に向けたプロトタイプの作成に取り組んでいた時期でした。

この時考えていたプロトタイプはボクセルアートっぽい箱庭を舞台としたアクションゲームです。

 

「ボクセルアート」とはファミコン時代のドット絵を立体化させたような感じで、立方体を組み合わせてつくる3DCGの事を指します。

Twitter等のSNSをチェックすると度々ボクセルアートの作品が投稿されているのを目にするし、インディゲーム界隈ではボクセルのゲームはソコソコ受けが良いみたい。

なのでボクセルアートのような一画面内に収まる狭い範囲の箱庭の中でSTGやACT、RPG等が再現ができればインパクトのあるものになりそう、そう考えて試しに簡単なランゲームを作っていました。

 

f:id:Karvan:20210105205820g:plain

自分の中では「良い感じ」にできたプロトタイプ。

 

お題発表、正式な開発期間(12/21~12/27)

今回のお題は「あける」だと発表がありました。開ける、明ける、空ける・・・幅広い意味でとらえる事ができる良いお題だと思います。

私は事前に作っていたプロトタイプがあるのでそれをお題に合わせて改変すれば期間内にできるな、と甘い考えを持ったままま、とりあえず「扉を開ける」方向でゲーム作成を進めることにしました。

 

一日目:ステージの端の表示がスムーズでないため、奇麗に見えるよう試行錯誤する(上のプロトタイプではブロックを置いて誤魔化しています)

二日目:ステージを横スクロールだけでなく上下にも動かしてみたくなり、実装に取り掛かる

三日目:ステージの上下に合わせて、周囲に下から上へ流れるCUBEが表示されるように変更

四日目:ステージの上下に合わせて、キャラクターのアニメ動作を設定する。タイミング合わせに苦労する。

 

・・・と、四日経過してステージが上下してキャラクターが飛び上がる演出しか完成しませんでした。なんでだろ?

でもまぁ、あとは障害物とか敵を表示できればゲームとしては成り立つし、きっと期限内に完成する。とその時は思っていました。

 

五日目:敵キャラが登場するようにオブジェクトプールとか色々作る。合わせてアニメ動作と当たり判定をつける。

六日目:扉の出現アニメーションを作成する。扉の移動と床のスクロール速度が合わずアレコレ試行する。

七日目(最終日):この段階でボス戦の実装に取り掛かる。絶対間に合わないのでTwitterに進捗報告を上げた後、サイバーパンクに現実逃避する。

 

この時の進捗具合はこんな感じ。ボス戦以外はそれとなく完成しているので遅刻しても2,3日中、もしくは年内には完成する想定でいました。

f:id:Karvan:20210105210147g:plain

 

遅刻期間(2020/12/28~2021/01/03)

12/28:画面はモノトーンベースの方がオシャレかも、などとトチ狂ってデザインを変更する

f:id:Karvan:20210105210019g:plain

 

12/29:急にボスを使徒ラミエルのように変形させたくなり、その実装で丸一日潰れる

f:id:Karvan:20210105210416g:plain

 

第一形態で心が折れたので二形態目は手を抜く。そして疲れを癒すためにサイバーパンクに現実逃避する。

f:id:Karvan:20210105210740g:plain

 

12/30:ボスにダメージエフェクトをつける。年内に完成しなくても良いんじゃいかと思えてきたので、サイバーパンクのACT1のサブクエを全てクリアする。

12/31:そういえば自機や敵のHPとかゲーム開始前後のUI作ってないなぁ、と思いながら、サイバーパンクのACT1をクリアする。

01/01:明日は頑張る、元旦ぐらいはいいじゃん、という気分でサイバーパンクのクエストを次々とこなしていく。

01/02:いい加減サイバーパンクが一区切りついたので、ゲームの開始画面とかゲームオーバーの演出とか色々作る

01/03:一通りが完成したのでビルドしてunityroomに投稿する

 

途中無駄に過ごした数日がありましたがとりあえず完成してよかったです。

評価期間中なので最終的な評価は分かりませんが自分としては満足する物が出来たと思っています。

まぁ、開発期間を一週間も延長すればそれなりの物は出来るよねぇ。とか嫌味が聞こえてきそうなので、今後は期限内に作成できるよう誘惑に負けない強い気持ちを持ちたいです。

【雑記】一年の終わりなので今年の活動を振り返る

年納

静音キーボードに買い替えたのに何故かAキーだけカタカタ音がする皆さんこんにちは。今週はUnity1Week期間中という事で、私も微力ながら参加しようと新規にプロジェクトを立ち上げたはいいものの、デフォルト画面のまま中々構想がまとまりません、どうしよう。

こんな時はTwitterに流れてくる他の参加者の進捗報告でも参考にしようかと思ったのですが、最近のTwitterトレンドは暇を持て余したジジババ政治豚のハッシュタグで溢れているのでTwitterを開く気にもなれません、どうしてくれよう。

とりあえずUnity1Weekの今回のお題は「あける」ということなので、なんとか期間内にお題に沿った作品を仕上げたいと思います。

 

unityroom.com

 

振り返り

今年も早いもので残り二週間を切り、忘年会も納会もないまま今週で仕事納めとなります。

振り返ってみると今年はStab of Bee Projectとして一本もゲームをリリースできず、BitSummitやデジゲー博などのイベントにも出展できず仕舞いに終わってしまいました。

Unityroomの方にイベントを利用して幾つか試作的な作品を上げたりはしたのですが、少なくとも年に一本ぐらいは正式な物をリリースしたいし、何かしらのインディゲームのイベントにも出展してみたい。

どちらかといえば停滞した一年だったかなぁ、と思って言います。まぁ今年の更新はこれで最後だと思うので、今年一年の活動をざっくりと纏めてみました。

 

1月~3月

去年から引き続き2.5DのSTG製作を行うが全然モチベーションが上がらず作業が進まかった、ってか面白い作品になりそうな気がしなかった。

自分でプレイして面白いと思えないのに他人が面白いと思うわけはないので作品の方向性を変えるか、作り直すか、中断するか大いに悩んだ時期でした。結果中断。

 

タイトル画面だけは満足する物ができたのですがね、口惜しいなぁ。。。

f:id:Karvan:20201222211722g:plain

 

気晴らしにUnity1WeekにSTGのボス戦をイメージした作品で参加。なぜか絵作りと雰囲気は評価してもらえた。ありがとうございます。

f:id:Karvan:20201222213450g:plain

unityroom.com

 

4月~6月

STG製作は完全になる気が無くなり、アセットストアでフレームワークとなるアセットを見つけたのを契機にアドベンチャーゲームの製作に移行する。

これが現在制作中の脱出ゲーム

www.youtube.com

 

GWにroom6のゲームジャムに参加。物理演算を使ったゲームに初めてチャレンジする。
個人的にはそこそこに面白いと思ったのですが、ゲームジャムの結果としては箸にも棒にも掛からぬ、といった具合。むぅ~・・・

f:id:Karvan:20201222213820p:plain

unityroom.com

 

7月~9月

フレームワークを使っているだけあって脱出ゲームの製作が順調に進む。キャラクターの移動とかカメラ操作とか細々とした機能を自作しなくてよいのでゲーム本編にリソースを割けるし集中することができる。

とは言え、アドベンチャーゲームなのにざっくりしたストーリーしか構想しておらず行き当たりばったりに作っている感もあった。

 

最初のステージ分だけ完成したのでUnity1Weekにかこつけて出来たところまでをアップしてみるが中々厳しい結果を突き付けられる。ポイントとなる点が色々と説明不足なのかもしれない。

 

f:id:Karvan:20201222214103g:plain

unityroom.com

 

10月~12月

Voodooのランゲームコンテスト、講談社のゲームクリエイターラボに応募するもどちらも見事に落選。

ランゲームコンテストの方は製作が期間内ギリギリだったのと、応募には稼働率を調べるための処理・設定を組み込む必要があって右往左往、もうこりごり。

ゲームクリエイターラボには現在制作中の脱出ゲームとSTGの企画を提出して脱出ゲームの方は予備選考には通ったらしい。

 

f:id:Karvan:20201222213944g:plain

落選はしたがゲームクリエイターラボに応募するためストーリーの構想を練らなければならず、お陰で結末まできっちりとストーリーを整理することができた。

同じ作品の評価は8月のUnity1Weekでは散々だったので自信がなかったが、予備選考に通ったことでとりあえず方向性は間違ていないように思える。

 

最後に

製作中の脱出ゲームは来年の春にはリリースしたいと思っています。そしてこれを引提げてBitSummitみたいなイベントにも参加できればな、と思います。あくまで希望ですが

それでは、少し早いですが今年一年ありがとうございました。
良いお年を!

 

 

【Unity】今更気づくDOTweenのFromオプション

寒波到来

今年はそれほど寒く無いなぁと油断していたら週明けから急に寒くなって、慌てて冬用のズボンを取り出して履いてみたらお腹が苦しい皆さんこんにちは。

TVを見ると最近は何でもかんでもGotoのせいになっているので、これもGotoのせいに違いないし、外付けのSSDを購入してディスク容量を拡大してまで準備していたサイバーパンク2077なのに画面端が見切れて遊びづらいのもGotoのせいに違いありません。ちなみにPS4(ノーマル)です。

 

プロモーション

現在3Dの脱出ゲームを制作しており前回の記事の中でプロモーション動画を掲載しましたが悲しいほど誰も見てくれないので再度掲載します。

 

youtu.be

画面がホラーゲームっぽい雰囲気ですが、ホラー要素は殆どないパズルメインの脱出ゲームとなっています。よろしくお願いします。

 

今更気づく

毎度お世話になっているDOTweenですが、先日何気にDOTweenのドキュメントサイトを覗いていたらMoveやScale等のTweenのメソッドにFromオプションが使えることが記載されていました。

 

dotween.demigiant.com

前々から使えたのでしょうかね?

私は全く気付いていなかったのでFrom系の動作をさせたい場合にはiTweenの方を使って実装していました。

 

www.karvan1230.com

From系が使えると知っていたら、初めからDOTweenを使って実装していたのに口惜しい限りです。

なので今回はFrom系オプションのご紹介

 

From系の動作

このFrom系のオプションがどういうオプションなのか、というと例えばDOMoveの場合だと

   オブジェクトを指定した座標から現在の座標へ移動する

という動作が可能になります。

 

 説明だけではあまりピンとこないかもしれませんが、実際に通常のDOMoveとFromオプションをつけたDOMoveで動作を比較すると一目瞭然になります。

f:id:Karvan:20201215221932g:plain

 

Fromオプションは他のTweenでも設定可能で例えばDOScaleにFromオプションをつけると

f:id:Karvan:20201215222048g:plain

 こんな感じに動作します。

 

また、3DオブジェクトだけでなくUIに関するメソッドにもFromオプションは使えるので、例えばDOColorで使ってみると

f:id:Karvan:20201215222147g:plain

元の色に戻ってくる動作となります。

 

何が利点なのか

このようなFrom系動作はTween後に現在位置に戻ってくる動作なので、エディタ上で調整した位置からわざわざ動かさなくても済む、というのが最大の利点になります。

 

主にUI系のパネル、ボタンやラベルなどのオブジェクトに関してはエディタ上で位置を調整して、ゲーム実行後はその位置から動くことは余りありませんが、ボタンクリック等でちょっとしたアニメーションをつけたい場合にFromオプションをつけてアニメーションを作ることができます。

 

下の動画ではDOAnchorPosにFromオプションをつけて黒のパネルを動作させています。

f:id:Karvan:20201215222302g:plain

 

Fromオプションを使いこなすことが出来れば色々と幅広いアニメーションを作れるのではないでしょうか。

なお、DOPathやDOPunch、DOShake等のメソッドはFromオプションに対応していないので詳細はドキュメントサイトを確認してください。

◇プライバシーポリシー

●個人情報の利用目的

当ブログでは、メールでのお問い合わせ、メールマガジンへの登録などの際に、名前(ハンドルネーム)、メールアドレス等の個人情報をご登録いただく場合がございます。

これらの個人情報は質問に対する回答や必要な情報を電子メールなどをでご連絡する場合に利用させていただくものであり、個人情報をご提供いただく際の目的以外では利用いたしません。

●個人情報の第三者への開示

当サイトでは、個人情報は適切に管理し、以下に該当する場合を除いて第三者に開示することはありません。

・本人のご了解がある場合
・法令等への協力のため、開示が必要となる場合

個人情報の開示、訂正、追加、削除、利用停止
ご本人からの個人データの開示、訂正、追加、削除、利用停止のご希望の場合には、ご本人であることを確認させていただいた上、速やかに対応させていただきます。

アクセス解析ツールについて

当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。

このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。
この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。

●免責事項

当サイトからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いません。

当サイトのコンテンツ・情報につきまして、可能な限り正確な情報を掲載するよう努めておりますが、誤情報が入り込んだり、情報が古くなっていることもございます。

当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。

●プライバシーポリシーの変更について

当サイトは、個人情報に関して適用される日本の法令を遵守するとともに、本ポリシーの内容を適宜見直しその改善に努めます。

修正された最新のプライバシーポリシーは常に本ページにて開示されます。