EngineのDocumentsを勝手に和訳してみる:How to install the TopDown Engine

おつぎはインストール方法 やってきまーす

イントロダクション

どのバージョンのUnityを利用していようとも、かならず空のプロジェクトにこのアセットをインポートしてください。そうすれば、エンジンのプロジェクト設定がきちんとインポートされます。 本アセットの機能は、Unityパッケージのものをいくつか利用しています。インポートしただけではいくつかエラーがでるでしょうが、その解消方法がこのページに書いてあります。

アセットをインポートする

下記の手順で本アセットをインポートしてください。
  1. Unity Hubから新しいプロジェクトを作成:Unityバージョンは2019.1で、3Dプロジェクトで作成してください。
  2. アセットストアから本アセットをインポートしてください。(くれぐれも空のプロジェクトに)
  3. インポートすると、CinemachineおよびPostprocessingの参照エラーが表示されるでしょうが、パニックにならず、落ち着いてこの記事を読んでください。:)

Unity 2019.1以上の場合

インストールすると、大量のエラーに見舞われるでしょう。大丈夫です、そういうものです。エラーを修正するためには、ファイルエクスプローラから(Unityからではなく) TopDown Engineのルートフォルダに あるmanifest.jsonファイルをコピーしあなたのプロジェクトのPackagesフォルダへペーストしてください。(もし既に存在する場合は上書き)Unityを再起動するか、Packagesフォルダを再インポートする必要があるかもしれませんが、大体はそのまま動きます。

LWRP, HDRP あるいはマニュアルでのパッケージ管理

マニフェストファイルを置換すると、簡単かつ迅速に本アセットを動かせるようになりますが、この方法にはいくつか問題が残ります。例えば、LWRPやHDRPといった、利用するパッケージを自分自身でコントロールしたい場合です。そういった場合は、依存するアセットを全て手動でインストールすると良いでしょう。その場合に必要なアセットはCinemahine,2D Pixel Perfect, PostProcessing Stackの3つです。

Unity 2018.3以下の場合

空のプロジェクトへのアセットインポートが完了したら、TopDown Engineは準備完了です。 CinemachineかPostProcessingに関するエラーが出ている場合は、こちらからアセットのプロジェクトセッティングとパッケージマニフェストをダウンロードしてください。Unityを終了し、これらのファイルをダウンロードしたらあなたのプロジェクトへコピーしてください。manifest.jsonファイルはproject/Packagesディレクトリへ、ProjectSettings.assetファイルは ProjectSettingsディレクトリへ格納してください。これら2つのファイルを上書きしたら、再度Unityをひらけばうまくいくはずです。 それでもダメなら、あなたがこれまで行った手順、起こったことをサポートへメールで送ってください。あなたの助けになれたら嬉しいです。

どうしてこれらのエラーが出るの?

本件は、Unityがアセット制作者に対し、アセットストアへのProject Settingsフォルダ(入力設定や品質などを含む)のアップロードは許可しているものの、どのアセットを使用するか記述するmanifest.jsonファイルのアップロードを許可していないために発生する問題です(今回の例で言えばPostProcessingとCinemachine)。近い将来修正されるようですが、しばらくの間は上記の手順を踏んでください。

カメラがズームインしすぎてる

Unityのバージョンが2018.3以下の場合、いくつかの設定が失われてしまうために発生することがあるようです。でも心配なく。2Dの場合は、MainCameraのPixel Perfect CameraコンポーネントのAssets Pixels Per Unitの値が16になっていること、仮想カメラのorthographic sizeが6.9となっているか確認してください。3Dの場合は、仮想カメラ(大体の場合CM vcam1という名前)を選択し、field of viewの値を40に設定してください。

TopDown EngineのDocumentsを勝手に和訳してみる:Introduction to the TopDown Engine

はじめに

自分の理解を深める&備忘録としてTopDown Engineのドキュメントを和訳してみます。

公式でもなければ英語ネイティブでもないので参考程度に。

まずは“Introduction to the TopDown Engine”から。

はじまるよー

TopDown Engineのイントロダクション

TopDown Engineのドキュメントへようこそ。あなただけのトップダウンビューゲームを作りましょう。そのために必要な全ての知識がここにまとまっています。
  • TopDown Engineってなに?
  • インストールしたらエラー出たんだけど / カメラがうごかないんだけど!
  • どこからはじめればいいの?

TopDown Engineってなに?

TopDown Engineはトップダウンビューゲームの制作のためのフレームワークです。Corgi Engineの制作者によって開発され、Unity Asset Storeから購入できます。

非常に軽快で、機能が多く、モバイルでも作りやすく、安定しておりかつ拡張性も持ったゲームエンジンとして、クオリティとプレイフィールを重視しています。Unityを使っていますぐ、あなたオリジナルのトップダウンビューゲーム(2Dでも3Dでも!)を作り始めましょう。

あらゆるトップダウンビューゲームの基礎として動作するようデザインされています。例えば、Binding of Isaacのようなダンジョンを探索するものから、レトロなゼルダのようなアドベンチャーゲーム、ファイナルファイトのような敵をすべて殲滅するものや、Hotline Miamiのような銃を使うゲームまで、ゲーム画面を上部から移すようなカメラ配置のゲームならあらゆるものが制作できます。

軽快、本番リリースにも利用可能、万能、軽量、拡張も容易なので、あなたのプロジェクトをグンと加速させてくれます。

インストールしたらエラー出たんだけど / カメラがうごかないんだけど!

アセット内にある”IMPORTANT-HOW-TO-INSTALL.txt”ファイルのinstall instrucionsを確認してください。パートごとに分かれたドキュメントも用意してあります。

どこからはじめればいいの?

ドキュメントのすべてに目を通す必要はありません。このエンジンはUnityの練習となることも念頭に置いて制作されており、多くのヘルプも詰め込まれています。これがあなたの初めてのUnityプロジェクトでないなら、おそらく自分で解決できるでしょう。もし何かわからないことがあれば、いつでもここに戻ってきてください。

左側にあるメニューから各項目へ進むことができます。このドキュメントは機能にフォーカスしています。もしコード自体に疑問点があれば、API Documentの方を参照するのが良いでしょう。また、コードのコメントを直接読むのもおすすめです。たいていの疑問は、コメントでカバーしています。

機能のリストがほしかったり、「この機能はあるのかな?」と思ったら、こちらのページを見てください。変更履歴や、そのほか役に立つものがあります。

ビデオチュートリアルもあります。

それでも解決しなければ、いつでもアセットストアサポートリンクからメールで連絡してください。

TopDown Engine 使ってみる【インストールと最小構成】

TopDown Engineとは

TopDown Engine は見下ろし型のアクションゲームを簡単に作るためのスクリプトやデモ素材が含まれる有料アセットです。

敵AIやマップ、インベントリなどの仕組みを組み合わせることで、オールドスタイルのゼルダやホットラインマイアミライクなゲームを作ることができます。

具体的にどんなことができるかは、公式のツアーガイドを見たり、アセット内に含まれるデモシーンをプレイしてみるとわかってきます。

インストール方法

アセットストアからインポートするだけではエラーが表示されてしまいます。

ChinemachineとPostProcessingをPackageManagerからインストールすることで解消されますので焦らずに。

最小構成

このアセットを使ってゲームを作るには、「かならずシーンにこれを置いてね!」という最小構成のオブジェクトがあります。

公式ドキュメントMinimal Scene Requirements

空っぽのシーンにまずはこれを配置しましょう。Demos>Minimal2Dに置いてあるオブジェクトをまるっとシーンにコピーにするだけでなんとかなりました。

これだけでもう、シーンにキャラクターが登場し、移動したりインベントリを開いたり、銃を撃って攻撃することができます。再生して色々やってみましょう。

いつもだったら三日くらいはかけてそうな処理がたった十分程度でできてしまいました。

丸いコアラのやつは、試しに置いてみたマトです。

次回は、NPCキャラクターの設置とそのAIを作っていきます。

BitSummit7 遠征レポ

BitSummitいってきました

去る6月1日土曜日、京都はみやこめっせで開催されたBitSummit7に行ってきました。

会場で遊んだイカれたゲームたちを紹介します。

BULLET BREAK


イラストのクオリティがとっても高くて女の子が可愛い。
モンスト風の引っ張りアクション+タワーディフェンスで可愛い見た目に反してプレイは結構忙しくなってきそう。
推しの1つっぽい世界観(ゲームの世界が舞台?)が会場の体験版ではイマイチ伝わってこなかったのが残念と言えば残念。

CUBE GARDEN 

ブロックをルービックキューブのように動かして、ゴールまでのルートを探すパズルゲーム
ルービックキューブの基本(このブロックをここに動かしたいときは、こうしてこうする)みたいな手順を知らなかったので非常に難しく感じたけども、それがわかる人ならとっても遊びごたえがありそう!

NEON TALL

ジェットセットラジオ?!を彷彿とさせるスケーターオープンワールド
癖のある操作だったけども、慣れてきて自由に飛んだり跳ねたりできたら絶対気持ちいいやつ。
会場デモでは、グラインドやジャンプ、ダッシュやバック走行などのアクション部分が遊べた。すでに気持ちよかった。

The game is inspired by the urban dynamism of Jet Set Radio, the character development, narration, and emotional connections from Life is Strange, and the open world freedom from new gen Batmans(ビッサミのタイトルページより)
ジェットセットラジオは予想通り、ストーリーの部分はライフイズストレンジ、オープンワールドの自由度はHDバットマンからインスパイアされているとのことで、製品版でそのあたりどうなっているのか非常に楽しみ。

SHOT!SHOT!SPY

タップだけでシンプルに遊べるシューティング
武器やオトモの成長要素もあり、ついつい遊んでしまいそう。
特筆すべきはバイブでのフィードバック!いわゆるスーパーカジュアルではよくみるものの、国内のタイトルだとなぜかあんまり見ない気がしていたのでとても印象的だった。
見ない理由があるのかな?とおもってたけど、プレイする分には特にデメリットないんだよなあ。
実装がむずいのかな?電池の持ちとか?わからん。

Stellar Jockeys

二足歩行とか球体のロボに乗ってぶっ壊してぶっ殺すデストロイゲーム
マップに設置してある建物全部ぶっ壊せるんだけどその物量、エフェクトがすごい

NO STRAIGHT ROADS

EDMを押し出したアクションゲーム
BGMのリズムに合わせてパリィがあったり、プレイしてて非常にテンションが上がる。
等身の高いカートゥーン風のキャラデザ、ボス戦前やボス最終形態のカメラワーク、必殺技やパリィの演出などなどクソかっこいい。
ff15のゲームデザイナとスト5のコンセプトアーティストを務めた従兄弟同士(?!)がDとして作ってるらしい。なにその一族欲張りすぎる
とにかくクソかっこいい。今回プレイした中でいちばんリリースが楽しみなゲーム

シューフォーズ

TOKYO SANDBOXでもプレイさせてもらった、わちゃわちゃのUFOタイマンゲーム
ステージ上にバラまかれるガラクタの中から、お題に沿ったものを吸い上げて自分の陣地まで運ぶ。
相手に持っていかれないように、殴ったり体当たりしたりして妨害!妨害!妨害!
非常にローカル対戦が盛り上がる楽しいゲーム。いちおう言っておくと勝ったのは僕です。

Lethal League

 

オランダブースに置いてあったハイスピードドッヂボールタイマンゲーム
直前にTwitterで紹介されてて気になってたけど、じつは2014年にすでにリリースされてた!寡聞にして存じ上げず。
めっちゃ楽しい!
どんどん加速していくボールを打ち返したりキャッチしたり、相手とのリズムを測りながら、時にはその呼吸を乱してポイントを奪うのがキモ。
この「リズムやタイミングを合わせてボタン」(ようするにパリィ)の遊びが自分はかなり好きなんだなぁと再認識。

Untitled Goose Game

 

あひるになって、人間にいたずらしまくるシミュレータ
お尻の動きがとってもキュート。
ちょっと塊魂を彷彿とさせる?ユルさとお題の自由さ。

オバケイドロ

すごく乱暴に言ってしまうとかわいくてカジュアルな和製Dead by Daylight
ただかといって、単にゲーム性をコピーしてるわけではなくて、よりカジュアルにあそべるよう、ルールがシンプルになるようブラッシュアップされている
並んでる間も見てる限り、どちらかの圧勝というゲームはなくて、だいたいギリギリの接戦になっていた。鬼と逃げる側とのバランスに、ひっじょーに丁寧に気を配られていると推測される

Play Dog Play Tag

開催直前にすい星のごとく現れてバズをかっさらっていった犬が飼い主引っ張るやつ!
まさかのマルチプレイだった、くそたのしいwww
犬が飼い主をチャージすると(?)飼い主が吹っ飛んでいき、散らばった骨をたくさん集めた人が勝ち。
町中にいる特殊な能力を持った人間を吹っ飛ばすと、特殊なチャージが出せたり(????)、後半になるとみんなで一位の人を蹴落としに行くので目まぐるしく順位が変わったり、ゲラゲラ笑えるパーティゲーム。ちなみに負けました。いいでしょう勝ち負けは。

おまけ

これは河原町でみかけたUnityなビル

10:30から途中お昼で二時間抜けて、16:30くらいまでまわってたけどぜんぜん回りきれない!

こんなスゲーゲームを作れる開発者がゴロゴロいるのか、、、とおちこんだりもしたけれど、私はげんきです。

なぜなら作るの楽しいから、俺にしか作れないゲームあるから!

励ましてくれたTwitterやUnityギルドのみんなありがとう~~~!!やるぞ~~~~!!!

公式チュートリアルSurvival Shooter WITH PK Chapter.21「敵の強さ、登場数、キャラクターの成長をデザインする」

21.敵の強さ、登場数、キャラクターの成長をデザインする

いよいよ大詰め、ウェーブごとに登場する敵の強さ、種類や数、それに加えて、ウェーブが進むごとにキャラクターも強くなっていくようデータを調整していきます。
ここ次第で、いままで一生懸命作ってきたゲームがおもしろくなるか、どうしようもないくそげーになるかが決まるといっても過言ではないフェーズ。

 

大まかな方針を立てる

まずは「どういう状態になっていてほしいか」を文章で表します。これは、ウェーブごとのコンセプトを立てるようなもの。ゲーム全体に「どういうゲームにしたいか」コンセプトを立てたように、より細かい粒度で「どう遊んでほしいか」のイメージを言葉にしていきます。

それを実現するためのデータを仮組する

「どう遊んでほしいか」を実現するためのデータを仮組していきます。ここで組んだデータは、後ほどプレイする過程でほぼ100%かわるので、この時点では肩ひじ張って悩む必要はないと思います。繰り返しますが「どう遊んでほしいか」のイメージを自分で構築しておくことが大事。

試す&調整する

仮組ができたらそれをゲームに流し込んでプレイしましょう。自分の「どう遊んでほしいか」という体験を実現できていますか?理想の状態に近づくまでなんどでもプレイし、データを調整しましょう。ここでやりがちなのは、難しくしすぎてしまうこと。慣れた自分では適切な塩梅がわからなくなりがちです。「自分だったら鼻ほじっててもクリアできるわー」くらいの難易度を目指しましょう。

今回ボクの作った「Suvival Shooter WITH PK」はコチラから遊べます。案の定難しくしすぎてますが、よかったら遊んでみてくださいね。

以上、21+1回にわたってお付き合いいただき、ありがとうございました。

前回はコチラ

Unity公式チュートリアルSurvival Shooter WITH PK Chapter.20「弾切れ、リロード中、武器チェンジ中をわかりやすくする」

問題作「MCバトルOnline」は如何にしてコケたか?@第11回Unity1week「つながる」

第11回Unity1weekに参加した

2019年03月11日(月)〜03月24日(日) に開催された第11回Unity1weekに参加しました。
今回制作したゲーム「MCバトルOnline」は「対戦相手とオンラインで、ラップのように韻をつないでいく」というゲームです。
「ほう、どれいっちょ遊んでみっか!」と思ってくださった菩薩のようなあなた。本当にありがとうございます。ですが、お気持ちだけで結構です。なぜかというとおそらく遊べません

だって対戦相手がいないから

今回制作したゲームは、完全オンラインの1対1、対戦相手がいないと成立しません。あなたがこの記事を読んでいる今この瞬間に他の誰かがあなたと同時にゲームをはじめていない限り、あなたはロビーで延々と対戦相手を待ち続けることになるでしょう。心優しいあなたの貴重な時間をそんなことで浪費させると思うと、僕はキーボードを濡らさずにはいられません。
さてどうしてそんなゲームを作ってしまったのか、それをこれから一緒に紐解いていきましょう。

お題発表

お題を確認し、アイデア出しを始めます。月曜中に企画が固まれば、前回の経験もあるし御の字だろうと考えてました。


これは企画のブレストメモ。いくつか面白そうな候補はありましたが、新しいこととしてオンラインもやってみたかったので「韻を踏んで言葉をつなげていく」というアイデアに決まりました。
逆につながらない「逆連想ゲーム」とか、「つながらない文学」とかは一発ネタとしてちょっと面白そうですね。「世代をつなぐ」系のネタも面白そうだと思いましたが、1週間ではまとまらないと判断してます。

順調に固まる企画

よさそうなアイデアが見つかったので、これを固めていきます。


さきほどのアイデアをもとに煮詰めていった企画メモ。

右上の「気になること」を見る限り、「もろもろ心配はあるものの作ってから考えろ!」というスタンスだったようです。じつに男らしい。ほかにも観戦や投票など、大きな夢を見ていることが窺えます。

コンセプトを整理している最中に頭に浮かんでいたのは、すけどんさん@stamina_techの「575オンライン」がヒットした事実でした。あのライブ感、ハプニング感に、即興の緊張感、韻を踏むこと自体のリズム感を乗せることができれば、間違いなく面白くなるだろうという確信がありました。

PUN完全に理解した

上記の企画をもとにさっそくPUNを使ってオブジェクトの実装に成功しているのが下記の動画。コンビニは特に関係ないんですが、手ごろな素材がなかったので。

そして次の時点で水曜日。企画も固まってるしオンラインも思ってたより簡単に動かせるし、この辺完全に調子乗ってます。

↓は調子乗ってて絶対面白いと思ったのに鬼ほどスベったツイート

プロトタイプが出来上がっていくのは早かったです。作っていても楽しいですね。
ただ、そのおかげで進捗が順調だと勘違いしています。

BGMも付きました。土曜日の夜。作業は進んでいると本人錯覚してますがさっきのツイートと比較すると見た目にはほとんど進んでないのがわかります。


ガンバローじゃねぇよ!おめえもがんばんだよ!

余裕のApexLegends

突然ですがみなさんはApexLegendsというゲームをご存知ですか?2019年2月4日に電撃リリースされて以来、新世代のバトロワFPSとして世界を席巻しているタイトルです。リリースされてからというもののその面白さに、家にいる時間はUnityを触っているかApexLegendsをやっているかという状態でした。さすがに1week期間中は自粛しようとDiscordでちゃんとフレンドたちに、イン率が下がることを宣言しています。えらいですね。

ちなみにこの後1時間だけプレイしました。チーターがはびこっていて全く面白くありませんでした。


次の日。風呂にも入らずしっかり誘ってプレイしてます。


夢の中でもプレイしていたようです。意識高いですね。


金曜の夜にはApex(あぺ)やりたくて禁断症状が出ています。進捗がでている(と錯覚している)ので余裕ですね。


土曜の夜です。かける言葉が見当たりませんね。

阿鼻と叫喚の週末

時間というのは不思議なもので、いつもそこにあるのに本当に必要な時に限って足りなくなるんです。「最後に余った時間をとってやろう」と思っていたことは落ちます。これは100パーです。

エモすぎるコミットログ


バグを巻き戻したいのに、うまくできなくてパニクってます。ブランチの名前とかコメントからそれが手に取るように伝わってきますね。作者の感情が強く表現されている、非常にエモいコミットログです。

罪悪感とロスタイム

日曜20時を迎え、リザルトへ遷移しないバグがあることを確認したままビルドをアップロード。


殊勝なこと抜かしてますがApexしなければもっと整ったと思います。


謝罪の気持ちを見せてますがApexしなければ直っていたバグと思います。

リアルタイムのオンラインゲームという性質上、自然流入で遊んでもらうのはむつかしいということは分かっていました。狙っていたのはぱふもどきさん@PafuOfDuck全ゲーム遊ぶ生放送。要するにここで取り上げられるタイミングまでに体裁を整えればいいわけです。大人って汚い。ご本人に確認したところ、オンラインゲームは木曜か土曜になるとのこと。

ここから、己のスパゲティコードと戦う地獄のロスタイムが始まりました。

心(蔵)震える実況生放送

幾度もの「PUNなんもわからん」夜を超えいよいよ迎えた放送当日。まだ多少バグは残っていたものの、最低限遊べるところまでは持っていくことができました。この時点では「面白くなるぞ」という自信と「理解してもらえるだろうか」という不安との間で針がゆらゆら揺れてました。

結果は惨敗。コメント欄やリアクションを眺める限り、そもそも「韻を踏む」ということが伝わっていなかった、伝わっていても非常に難しかった、という感じが窺えました。これが「肩ごしの視線」というやつですね。


放送終わってからなんだかもやもやしてました。


でもあそんでツイートまでしてくれたお二方、本当にありがとう!!

結果発表


放送のリアクションを見る限り全く期待していなかったのですが、どうにか斬新さ部門で4点、24位にランクインできました。
遊んでくださった方、評価をつけてくださった方、本当にありがとうございます。

斬新さ4点というのは絶妙で「(面白いかは分からんけど)ほかに見ないから4点、でも面白いか分からんし5点はつけられないかな」という評価だったのかなと解釈してます。そもそも遊べなかった人は点数つけられないでしょうし。
バグをとって「絵作り」「雰囲気」を整えて完成度を高めれば、結果的に「楽しさ」につながるし「斬新さ」のところにも評価が入りやすくなるだろうと思っています。

浮き彫りになった弱点

ひとつは実装スピード。作り方の引き出しといっていいかもしれません。「こういうことをしたいときは、こういうパターンがあるよ」というテンプレを習得し、なるべく頭と時間を浪費せずに実装していけるようになる必要があります。時間が余ればそれだけ、絵作りや全体的な統一感、バグ修正にパワーを割くことができます。
自分で一から実装するだけでなくアセットストアの活用も。今回DOTweenを使ってみましたが、動きのある絵が5分で作れて感動しました。
もう一つは世界観づくり。アート、サウンド、UI全てから受け取る印象ですね。今回は時間がなくてやれなかった、というのは確かに間違いありませんが、時間があったとてクオリティを出せたかというと、おそらくそんなことはなかったでしょう。普段からその練習してませんからね。

これからのUnity1weekへの挑み方

「ゼロから新しい技術、表現に挑戦する場」というよりも、「練習したものを披露する場」としてとらえていこうかなと。今回新たに挑戦したPUNは、非常に簡単で、かつ程よくハマりました。1week中はその復習をする時間が取れないのでハマったところをゴリ押しで突破して放置しがちというのもよくない。

次のunity1week(たぶん7月くらい?)でもこの形式が続くのであれば
* 評価100人
* 総合トップ10
を目指します。

トップ10きついかな?トップ30くらいがいいかな?表向きはトップ10にしといてそれは努力目標ということにしておこうかな?

まとめの中期目標

これから3か月間は、細かく作って出してのサイクルを加速させていきます。新しい技術や設計、思想、テーマの検証→3週間でそれをリリース、を繰り返していくイメージ。
並行してアートや3Dモデルの勉強も始めていきます。3Dでつくってみたいゲームがあるんですよね。その辺も、この検証期間を使ってゲームに落とし込んでみたいと思います。


これ以降めんどくさくなったのでやってません。

ご意見ツッコミあればお待ちしています。

Unity公式チュートリアルSurvival Shooter WITH PK Chapter.20「弾切れ、リロード中、武器チェンジ中をわかりやすくする」

20.弾切れ、リロード中、武器チェンジ中をわかりやすくする

大きく分けて下記の三つをまとめて実装します
* 弾切れ中に左クリックしたらカチカチ鳴って弾切れしているとわかる
* リロード中、HUDにその情報を表示する
* 武器チェンジ中、HUDにその情報を表示する

弾切れ中にカチカチ鳴らす

サウンドファイルは適当なものを用意してきます。実装は下記の通り

うーんイケてない。「おしっぱで射撃できていい」という仕様と「おしっぱでカチカチならすと音がうるさい」という問題とがバッティングしてしまっているため、わざわざInput.GetButtonDownで判定を取り直しています。きれいにできそうな気もするんですけどまあええかまずは完成させたろの精神でスルー!

リロード中のHUDを表示

これも適当な画像を作ります。この画像を、リロード中の待ち時間の間表示します。

これはシンプルですね。リロードが始まったら表示してWaitForSecondsが終わったら消す。ちなみにこの画像はCanvas内に設置しています。次の武器チェン表示も要領は同じ。

武器チェンジ中のHUDを表示

こちらも適当な画像を用意。

おんなじですね。今回はこれで終わり!

次回はコチラ

公式チュートリアルSurvival Shooter WITH PK Chapter.21「敵の強さ、登場数、キャラクターの成長をデザインする」

前回はコチラ

Unity公式チュートリアルSurvival Shooter WITH PK Chapter.19「照準を表示する」

Unity公式チュートリアルSurvival Shooter WITH PK Chapter.19「照準を表示する」

19.照準を表示する

射撃がどこに飛んでいくかの目安となる照準(レティクル)を表示します。

画像を用意する


今回は32*32pixelで画像を書きました。これをCanvas上に設置し、マウスカーソルの位置を追うようにします。

Reticleクラスの実装

Reticleクラスを作成し中身を実装していきます。

超シンプルですが、ほぼ意図通りの挙動です。

バグ

射撃は、GunBarrelEndオブジェクトの正面に向かって真っすぐ飛んでいく実装になっています。
ただ、射撃の始点であるGunBarrelEndオブジェクトがPlayerの正中線よりやや右に設置されているため、レティクルの位置と実際に射撃が飛んでいく位置がずれてしまっています。
GunBarrelEndオブジェクトの位置を調整してみようと試行錯誤したのですがうまくいかず。このバグは仕様にしようそうしよう。

次回はコチラ

Unity公式チュートリアルSurvival Shooter WITH PK Chapter.20「弾切れ、リロード中、武器チェンジ中をわかりやすくする」

前回はコチラ

Unity公式チュートリアルSurvival Shooter WITH PK Chapter.18「カメラシェイク」

Unity公式チュートリアルSurvival Shooter WITH PK Chapter.18「カメラシェイク」

18.カメラシェイク

カメラシェイクとは、カメラ=画面が小刻みにぶるっと震える演出のことです。ダメージを与えた、受けた、壁に激しくぶつかったなど視点が揺れるときの演出として使います。今回はダメージを与えた時に画面が揺れるようにしてみましょう。かなり臨場感が増しました!

CameraShakeクラスの実装

新しくCameraShakeクラスを作成し、MainCameraにアタッチします。
ShakeTimeの値が正の間カメラが揺れ続け、Update内でShakeTimeの値を減らしています。負の値になると揺れが止まります。
PlayerShootingクラスのShootメソッド内で、ダメージを与えるタイミングでShakeTimeに揺らしたい秒数を入れることでカメラシェイクを実行しています。

public class CameraShake : MonoBehaviour {

public float ShakeTime { get; set; }

private void Start()
{
ShakeTime = 0.0f;
}

private void Update()
{
if (ShakeTime > 0.0f)
{
ShakeTime -= Time.deltaTime;
ShakeCamera();
}
else if(ShakeTime <= 0.0f)
{
ShakeTime = 0.0f;
}
}

public void ShakeCamera()
{
//カメラの揺らし幅
float x = Random.Range(-0.1f, 0.1f);
float y = Random.Range(-0.1f, 0.1f);

//カメラを揺らす
transform.position += new Vector3(x, y, 0);
}
}

次回はコチラ(執筆中)

前回はコチラ

Unity公式チュートリアルSurvival Shooter WITH PK Chapter.17.5「リファクタリング」