遠征レポBitSummitいってきました去る6月1日土曜日、京都はみやこめっせで開催されたBitSummit7に行ってきました。会場で遊んだイカれたゲームたちを紹介します。BREAKイラストのクオリティがとっても高くて女の子が可愛い。モンスト風の引っ張りアクション+タワーディフェンスで可愛い見た目に反してプレイは結構忙しくなってきそう。推しの1つっぽい世界観(ゲームの世界が舞台?)が会場の体験版ではイマイチ伝わってこなかったのが残念と言えば残念。TALLジェットセットラジオ?!を彷彿とさせるスケーターオープンワールド癖のある操作だったけども、慣れてきて自由に飛んだり跳ねたりできたら絶対気持ちいいやつ。会場デモでは、グラインドやジャンプ、ダッシュやバック走行などのアクション部分が遊べた。Batmans(ビッサミのタイトルページより)ジェットセットラジオは予想通り、ストーリーの部分はライフイズストレンジ、オープンワールドの自由度はHDバットマンからインスパイアされているとのことで、製品版でそのあたりどうなっているのか非常に楽しみ。SHOT!SHOT!SPYタップだけでシンプルに遊べるシューティング武器やオトモの成長要素もあり、ついつい遊んでしまいそう。特筆すべきはバイブでのフィードバック!いわゆるスーパーカジュアルではよくみるものの、国内のタイトルだとなぜかあんまり見ない気がしていたのでとても印象的だった。見ない理由があるのかな?とおもってたけど、プレイする分には特にデメリットないんだよなあ。実装がむずいのかな?電池の持ちとか?わからん。ROADSEDMを押し出したアクションゲームBGMのリズムに合わせてパリィがあったり、プレイしてて非常にテンションが上がる。等身の高いカートゥーン風のキャラデザ、ボス戦前やボス最終形態のカメラワーク、必殺技やパリィの演出などなどクソかっこいい。ff15のゲームデザイナとスト5のコンセプトアーティストを務めた従兄弟同士(?!)がDとして作ってるらしい。なにその一族欲張りすぎるとにかくクソかっこいい。SANDBOXでもプレイさせてもらった、わちゃわちゃのUFOタイマンゲームステージ上にバラまかれるガラクタの中から、お題に沿ったものを吸い上げて自分の陣地まで運ぶ。相手に持っていかれないように、殴ったり体当たりしたりして妨害!妨害!妨害!非常にローカル対戦が盛り上がる楽しいゲーム。いちおう言っておくと勝ったのは僕です。Leagueオランダブースに置いてあったハイスピードドッヂボールタイマンゲーム直前にTwitterで紹介されてて気になってたけど、じつは2014年にすでにリリースされてた!寡聞にして存じ上げず。楽しい!どんどん加速していくボールを打ち返したりキャッチしたり、相手とのリズムを測りながら、時にはその呼吸を乱してポイントを奪うのがキモ。この「リズムやタイミングを合わせてボタン」(ようするにパリィ)の遊びが自分はかなり好きなんだなぁと再認識。Gameあひるになって、人間にいたずらしまくるシミュレータお尻の動きがとってもキュート。塊魂を彷彿とさせる?ユルさとお題の自由さ。Daylightただかといって、単にゲーム性をコピーしてるわけではなくて、よりカジュアルにあそべるよう、ルールがシンプルになるようブラッシュアップされている並んでる間も見てる限り、どちらかの圧勝というゲームはなくて、だいたいギリギリの接戦になっていた。Tag開催直前にすい星のごとく現れてバズをかっさらっていった犬が飼い主引っ張るやつ!まさかのマルチプレイだった、くそたのしいwww犬が飼い主をチャージすると(?)飼い主が吹っ飛んでいき、散らばった骨をたくさん集めた人が勝ち。町中にいる特殊な能力を持った人間を吹っ飛ばすと、特殊なチャージが出せたり(????)、後半になるとみんなで一位の人を蹴落としに行くので目まぐるしく順位が変わったり、ゲラゲラ笑えるパーティゲーム。いいでしょう勝ち負けは。おまけこれは河原町でみかけたUnityなビル10:30から途中お昼で二時間抜けて、16:30くらいまでまわってたけどぜんぜん回りきれない!こんなスゲーゲームを作れる開発者がゴロゴロいるのか、、、とおちこんだりもしたけれど、私はげんきです。Chapter.21「敵の強さ、登場数、キャラクターの成長をデザインする」21.敵の強さ、登場数、キャラクターの成長をデザインするいよいよ大詰め、ウェーブごとに登場する敵の強さ、種類や数、それに加えて、ウェーブが進むごとにキャラクターも強くなっていくようデータを調整していきます。ここ次第で、いままで一生懸命作ってきたゲームがおもしろくなるか、どうしようもないくそげーになるかが決まるといっても過言ではないフェーズ。大まかな方針を立てるまずは「どういう状態になっていてほしいか」を文章で表します。これは、ウェーブごとのコンセプトを立てるようなもの。ゲーム全体に「どういうゲームにしたいか」コンセプトを立てたように、より細かい粒度で「どう遊んでほしいか」のイメージを言葉にしていきます。それを実現するためのデータを仮組する「どう遊んでほしいか」を実現するためのデータを仮組していきます。ここで組んだデータは、後ほどプレイする過程でほぼ100%かわるので、この時点では肩ひじ張って悩む必要はないと思います。繰り返しますが「どう遊んでほしいか」のイメージを自分で構築しておくことが大事。試す&調整する仮組ができたらそれをゲームに流し込んでプレイしましょう。自分の「どう遊んでほしいか」という体験を実現できていますか?理想の状態に近づくまでなんどでもプレイし、データを調整しましょう。ここでやりがちなのは、難しくしすぎてしまうこと。慣れた自分では適切な塩梅がわからなくなりがちです。「自分だったら鼻ほじっててもクリアできるわー」くらいの難易度を目指しましょう。PK」はコチラから遊べます。難しくしすぎてますが、よかったら遊んでみてくださいね。以上、21+1回にわたってお付き合いいただき、ありがとうございました。開催された第11回Unity1weekに参加しました。今回制作したゲーム「MCバトルOnline」は「対戦相手とオンラインで、ラップのように韻をつないでいく」というゲームです。「ほう、どれいっちょ遊んでみっか!」と思ってくださった菩薩のようなあなた。本当にありがとうございます。お気持ちだけで結構です。いうとおそらく遊べません。対戦相手がいないから今回制作したゲームは、完全オンラインの1対1、対戦相手がいないと成立しません。あなたがこの記事を読んでいる今この瞬間に他の誰かがあなたと同時にゲームをはじめていない限り、あなたはロビーで延々と対戦相手を待ち続けることになるでしょう。心優しいあなたの貴重な時間をそんなことで浪費させると思うと、僕はキーボードを濡らさずにはいられません。してそんなゲームを作ってしまったのか、それをこれから一緒に紐解いていきましょう。お題発表お題を確認し、アイデア出しを始めます。月曜中に企画が固まれば、前回の経験もあるし御の字だろうと考えてました。これは企画のブレストメモ。いくつか面白そうな候補はありましたが、新しいこととしてオンラインもやってみたかったので「韻を踏んで言葉をつなげていく」というアイデアに決まりました。逆につながらない「逆連想ゲーム」とか、「つながらない文学」とかは一発ネタとしてちょっと面白そうですね。「世代をつなぐ」系のネタも面白そうだと思いましたが、1週間ではまとまらないと判断してます。順調に固まる企画よさそうなアイデアが見つかったので、これを固めていきます。さきほどのアイデアをもとに煮詰めていった企画メモ。右上の「気になること」を見る限り、「もろもろ心配はあるものの作ってから考えろ!」というスタンスだったようです。ほかにも観戦や投票など、大きな夢を見ていることが窺えます。コンセプトを整理している最中に頭に浮かんでいたのは、すけどんさん@stamina_techの「575オンライン」がヒットした事実でした。あのライブ感、ハプニング感に、即興の緊張感、韻を踏むこと自体のリズム感を乗せることができれば、間違いなく面白くなるだろうという確信がありました。PUN完全に理解した上記の企画をもとにさっそくPUNを使ってオブジェクトの実装に成功しているのが下記の動画。コンビニは特に関係ないんですが、手ごろな素材がなかったので。2019そして次の時点で水曜日。企画も固まってるしオンラインも思ってたより簡単に動かせるし、この辺完全に調子乗ってます。2019↓は調子乗ってて絶対面白いと思ったのに鬼ほどスベったツイート専業でもいいからお家で面白いゲーム作って帰りを待っててくれる奥さんが欲しいなあ「今日は辛口の死に覚えゲーにしてみたの。2019プロトタイプが出来上がっていくのは早かったです。作っていても楽しいですね。そのおかげで進捗が順調だと勘違いしています。明確にフェーズを分けたほうが捗るな。2019BGMも付きました。作業は進んでいると本人錯覚してますがさっきのツイートと比較すると見た目にはほとんど進んでないのがわかります。2019ガンバローじゃねぇよ!おめえもがんばんだよ!余裕のApexLegends突然ですがみなさんはApexLegendsというゲームをご存知ですか?2019年2月4日に電撃リリースされて以来、新世代のバトロワFPSとして世界を席巻しているタイトルです。リリースされてからというもののその面白さに、家にいる時間はUnityを触っているかApexLegendsをやっているかという状態でした。1week期間中は自粛しようとDiscordでちゃんとフレンドたちに、イン率が下がることを宣言しています。ちなみにこの後1時間だけプレイしました。チーターがはびこっていて全く面白くありませんでした。風呂にも入らずしっかり誘ってプレイしてます。夢の中でもプレイしていたようです。金曜の夜にはApex(あぺ)やりたくて禁断症状が出ています。進捗がでている(と錯覚している)ので余裕ですね。かける言葉が見当たりませんね。時間というのは不思議なもので、いつもそこにあるのに本当に必要な時に限って足りなくなるんです。「最後に余った時間をとってやろう」と思っていたことは落ちます。これは100パーです。2019バグを巻き戻したいのに、うまくできなくてパニクってます。ブランチの名前とかコメントからそれが手に取るように伝わってきますね。作者の感情が強く表現されている、非常にエモいコミットログです。罪悪感とロスタイム日曜20時を迎え、リザルトへ遷移しないバグがあることを確認したままビルドをアップロード。2019殊勝なこと抜かしてますがApexしなければもっと整ったと思います。リザルトに遷移しないバグとか日本語入力できないバグとかもろもろを修正しました。2019謝罪の気持ちを見せてますがApexしなければ直っていたバグと思います。リアルタイムのオンラインゲームという性質上、自然流入で遊んでもらうのはむつかしいということは分かっていました。狙っていたのはぱふもどきさん@PafuOfDuckの全ゲーム遊ぶ生放送。要するにここで取り上げられるタイミングまでに体裁を整えればいいわけです。ご本人に確認したところ、オンラインゲームは木曜か土曜になるとのこと。ここから、己のスパゲティコードと戦う地獄のロスタイムが始まりました。幾度もの「PUNなんもわからん」夜を超えいよいよ迎えた放送当日。多少バグは残っていたものの、最低限遊べるところまでは持っていくことができました。この時点では「面白くなるぞ」という自信と「理解してもらえるだろうか」という不安との間で針がゆらゆら揺れてました。コメント欄やリアクションを眺める限り、そもそも「韻を踏む」ということが伝わっていなかった、伝わっていても非常に難しかった、という感じが窺えました。これが「肩ごしの視線」というやつですね。できそうなものを作る、で作った前回の1weekとは違って、今回はこれはきっと面白いで作ったせいか、前回よりもモドカシイ気持ちが強い。2019放送終わってからなんだかもやもやしてました。2019放送のリアクションを見る限り全く期待していなかったのですが、どうにか斬新さ部門で4点、24位にランクインできました。遊んでくださった方、評価をつけてくださった方、本当にありがとうございます。斬新さ4点というのは絶妙で「(面白いかは分からんけど)ほかに見ないから4点、でも面白いか分からんし5点はつけられないかな」という評価だったのかなと解釈してます。そもそも遊べなかった人は点数つけられないでしょうし。バグをとって「絵作り」「雰囲気」を整えて完成度を高めれば、結果的に「楽しさ」につながるし「斬新さ」のところにも評価が入りやすくなるだろうと思っています。アイデアが残念ながらたのしさに結びついてないのはぼくの技術不足なのか、はたまた。今回からの評価システム、お祭りとしての盛り上がりはもちろんフィードバックとしてめちゃめちゃ有用ですね。2019浮き彫りになった弱点ひとつは実装スピード。作り方の引き出しといっていいかもしれません。「こういうことをしたいときは、こういうパターンがあるよ」というテンプレを習得し、なるべく頭と時間を浪費せずに実装していけるようになる必要があります。時間が余ればそれだけ、絵作りや全体的な統一感、バグ修正にパワーを割くことができます。自分で一から実装するだけでなくアセットストアの活用も。今回DOTweenを使ってみましたが、動きのある絵が5分で作れて感動しました。アート、サウンド、UI全てから受け取る印象ですね。今回は時間がなくてやれなかった、というのは確かに間違いありませんが、時間があったとてクオリティを出せたかというと、おそらくそんなことはなかったでしょう。普段からその練習してませんからね。「ゼロから新しい技術、表現に挑戦する場」というよりも、「練習したものを披露する場」としてとらえていこうかなと。今回新たに挑戦したPUNは、非常に簡単で、かつ程よくハマりました。1week中はその復習をする時間が取れないのでハマったところをゴリ押しで突破して放置しがちというのもよくない。総合トップ10を目指します。トップ10きついかな?トップ30くらいがいいかな?表向きはトップ10にしといてそれは努力目標ということにしておこうかな?まとめの中期目標これから3か月間は、細かく作って出してのサイクルを加速させていきます。新しい技術や設計、思想、テーマの検証→3週間でそれをリリース、を繰り返していくイメージ。並行してアートや3Dモデルの勉強も始めていきます。3Dでつくってみたいゲームがあるんですよね。その辺も、この検証期間を使ってゲームに落とし込んでみたいと思います。2019これ以降めんどくさくなったのでやってません。ご意見ツッコミあればお待ちしています。武器チェンジ中、HUDにその情報を表示するhttps://gameshi.info/wp-content/uploads/2019/02/bandicam-2019-02-25-01-06-22-642.mp4弾切れ中にカチカチ鳴らすサウンドファイルは適当なものを用意してきます。0){return;}else{//装備してる武器によってSwitchして、Shootメソッドに渡す引数を変える//hogehoge}}//hogehoge}うーんイケてない。「おしっぱで射撃できていい」という仕様と「おしっぱでカチカチならすと音がうるさい」という問題とがバッティングしてしまっているため、わざわざInput.GetButtonDownで判定を取り直しています。きれいにできそうな気もするんですけどまあええかまずは完成させたろの精神でスルー!リロード中のHUDを表示これも適当な画像を作ります。この画像を、リロード中の待ち時間の間表示します。false;reloadable.Reload(CurrentMaxAmmo);}これはシンプルですね。リロードが始まったら表示してWaitForSecondsが終わったら消す。ちなみにこの画像はCanvas内に設置しています。次の武器チェン表示も要領は同じ。武器チェンジ中のHUDを表示こちらも適当な画像を用意。false;plChangeWeapon.ChangeWeapon(changeWeapon);}おんなじですね。Chapter.19「照準を表示する」19.照準を表示する射撃がどこに飛んでいくかの目安となる照準(レティクル)を表示します。画像を用意する今回は32*32pixelで画像を書きました。これをCanvas上に設置し、マウスカーソルの位置を追うようにします。Reticleクラスの実装Reticleクラスを作成し中身を実装していきます。Input.mousePosition;}}超シンプルですが、ほぼ意図通りの挙動です。https://gameshi.info/wp-content/uploads/2019/02/bandicam-2019-02-24-15-46-26-264.mp4バグ射撃は、GunBarrelEndオブジェクトの正面に向かって真っすぐ飛んでいく実装になっています。射撃の始点であるGunBarrelEndオブジェクトがPlayerの正中線よりやや右に設置されているため、レティクルの位置と実際に射撃が飛んでいく位置がずれてしまっています。GunBarrelEndオブジェクトの位置を調整してみようと試行錯誤したのですがうまくいかず。このバグは仕様にしようそうしよう。Chapter.18「カメラシェイク」18.カメラシェイクカメラシェイクとは、カメラ=画面が小刻みにぶるっと震える演出のことです。ダメージを与えた、受けた、壁に激しくぶつかったなど視点が揺れるときの演出として使います。今回はダメージを与えた時に画面が揺れるようにしてみましょう。新しくCameraShakeクラスを作成し、MainCameraにアタッチします。ShakeTimeの値が正の間カメラが揺れ続け、Update内でShakeTimeの値を減らしています。負の値になると揺れが止まります。PlayerShootingクラスのShootメソッド内で、ダメージを与えるタイミングでShakeTimeに揺らしたい秒数を入れることでカメラシェイクを実行しています。リファクタリング幻の第17回でコードを引っ掻き回した結果、PlayerShootingクラスが鬼のように見づらくなりました。今回は、リロードと武器チェンジの処理を別クラスに引っぺがし、射撃処理自体も関数化することで可読性を高めるリファクタリングを行います。どちらかというと、「こうなりました」という報告。PlayerReloadクラス今回Interfaceを練習がてら使ってみました。武器種ごとにリロードを実装するつもりだったのが結果的にReload関係のクラスは1つで済んだので、Interfaceの用途としては正しくありません。false;}}Interfaceの説明については、こちらの説明が簡潔で非常に理解しやすかったです。https://qiita.com/Akira_Kido_N/items/7cd18944173cd4cd7229イメージをつかんだらこちらを読んでより本質的な理解に進むとよいかと。https://niconare.nicovideo.jp/watch/kn3404PlayerChangeWeaponクラスswitchの中をもっと共通化できないか30秒くらい悩んでできなさそうだったのであきらめました。false;}}PlayerShootingクラス全部張ると長くなるので、UpdateとShootメソッドだけ。Shootメソッドの可読性が上がってます。//Rayの始点(マズル固定)と方向(一定範囲内でランダム)をnumRayの数だけ設定。直前に出てたものの中断と新たに表示gunParticles.Stop();gunParticles.Play();//弾道を設定//Rayの始点(マズル固定)と方向(一定範囲内でランダム)をnumRayの数だけ設定。maxAmmo;}リファクタリングはうまくはまるとパズルを解いたような快感がありますね。漫画やゲームの整理が昔から好きだったのでその楽しさにも似てるかも。Chapter.17「調整:ノックバックを実装する」17.調整:ノックバックを実装するアクションゲームには欠かせないといってもいいノックバック演出。攻撃を当てた瞬間に、敵やプレイヤーの動きが止まってからリアクションが始まるというもの。実装に当たって改めてノックバックについて調べてみると、様々なタイプがあるようです。ゲーム内の時間を丸ごと止めるもの、敵だけ、プレイヤーだけ止めるものなどなど。どのようなノックバックがあるかについては、下記の動画が大変参考になりました。格闘でなく射撃であることを考慮すると「敵だけを止める」タイプのヒットストップが適しているかと思いました。以下、ヒットストップについての考え余談。ヒットストップとはなんぞせっかくのアクションゲームだしヒットストップとか入れてみるか(開発延長)剣とか格闘のゲームでは欠かせない演出だけど、銃とかシューティングではあんまり見ない気がする?サムスのチャージショットくらいしか例が浮かばない射撃攻撃とヒットストップについて仮説1:ヒットストップとは「吹っ飛ばし」の再現であるなので、ライフルとかサブマシンガン、レーザーみたいな貫通の攻撃とはあまり相性が良くない逆に射撃であっても、ミサイルとか波動拳とかかめはめ波みたいな、衝撃の攻撃とは相性が良い仮説2:ヒットストップとは「抵抗」の再現であるサンドバックを蹴れば、かならずサンドバックからの跳ね返りが存在し、無抵抗で振り抜くことはできないその抵抗の感覚を再現するのがヒットストップであるため、自分の体から離れてしまった攻撃からは抵抗を受けないため、射撃とは相性が良くないここまで書いてて思ったけど、要するに現実世界に存在する「作用反作用」のフィードバックをいかにしてプレイヤーに与えるか、という問いに対する1つの答えってことかな逆に言えば、ヒットストップを設けることで、射撃攻撃であっても「吹っ飛ばし」や「抵抗」のような作用反作用のフィードバックをプレイヤーに与えられる、ということだろうかあとカメラシェイクかこっちは実装したことあるからすぐいけるはずひとくちにヒットストップといってもさまざまなパターンがある模様それらの挙動を比較してくれているこの動画がかなり参考になる。自然かな?サムス:撃った瞬間反動でちょっと後ろに下がってる。ヒットストップというよりその反動で重量感を出しているもようベヨネッタ:当たった瞬間その場で硬直してから吹っ飛んでる。硬直中は完全に動きが止まるわけじゃなくて、やられモーションのままぶるぶるしてる?それともエフェクトでそうみえるだけ?こっちで見ると、食らったほうはその場で上下に細かく揺れたり震えたりしてるのがわかる撃ったほうはストップしてるというか反動で後ろに下がるor硬直してるだけだなていうか格闘でも、攻撃したほうにはヒットストップ入れてないな不利になっちゃうから当たり前かヌルっと止まると気持ちよくない、パキッとその場で止まって欲しいのでWaitForSecondsをつかうか。実装したけど削除しました!!!https://gameshi.info/wp-content/uploads/2019/02/bandicam-2019-02-03-15-48-22-126.mp4一度実装してみたけど、思ったよりも爽快感に寄与せずゲームプレイがダラけただけだったので削除しました!攻撃が当たった瞬間=ノックバック処理の実行直前に、NavMeshのVelocityを0にするStopMotionメソッドを事項してます。//speedをゼロにするやり方は、減速してから止まるので気持ちよくない。Vector3.zero;//speedをゼロにするやり方は、減速してから止まるので気持ちよくない。0f;}がんばって作ったけど削除しました!!!あと、これを実装するときにPlayerShootingクラスが超でぶになって見づらかったので、リファクタリングを一緒にしてます。これについては次回まとめます。Chapter.16「調整:攻撃中の移動速度を遅くする」16.調整:攻撃中の移動速度を遅くする前回までで、主だった昨日の実装は一段落つきました。ここからは実際に遊んでみてのフィードバックをもとに、細かい部分の実装をしていきます。気になったのは、逃げながら攻撃していればほぼ追いつめられることが無い点でした。敵の移動速度>プレイヤーの速度となるよう調整するのが一案ですが、例えばシールド象の移動速度を速くすると少々オーバーパワーのようです。そこで、「攻撃中だけプレイヤーの移動速度が遅くなる」ようにします。移動速度を遅くするメソッドと、遅くなった移動速度を回復させるメソッドを追記します。slowSpeedRate;}このメソッドの実行は、PlayerShootingクラスから行います。PlayerShootingクラスから実行まずは遅くする処理。Shootingメソッドの中で実行します。PlayerMovementの取得は、PublicでInspectorより行います。0f;}}次に移動速度を回復させる処理。こちらはUpdateメソッドから。挙動ができていればOK!第17回がお蔵入りしたので次回はコチラ※第17回ではノックバックの実装を行いましたが、イマイチだったので削除してます。Chapter.15「特殊な敵を実装する」15.特殊な敵を実装する前回の記事で書いたように、今回のゲームでは敵と武器とは対になります。(断続的に登場するオーソドックスな敵)これはすでに実装しているZonbunnyちゃんで良いでしょう。(一斉に大量登場するが、HPが低い敵)Zonbearちゃんのパラメータを調整すれば実現できそうです。(盾orバリアを持っておりかつ、ダメージを食らわないでいると盾の耐久が回復する敵)実装が必要ですね。今回はHellephantちゃんをこのシールド持ちにしましょう。してできた完成図がコチラ。https://gameshi.info/wp-content/uploads/2019/01/bandicam-2019-01-30-21-39-57-659.mp4実装の段取りはこのようになります。cubeを作成し、ShpereColliderをアタッチします。シールドに衝突判定は設けないため、isTriggerにチェックを入れておきます。LayerをShootableにしておくことをお忘れなく。後の工程でこれに気づかず、2時間くらいハマりました。Shieldの色を半透明にしたいため、専用のMaterialを用意します。Materialを作成し、Albedoから半透明の赤に調整し、ShieldObjectのMeshRendererにあるMaterialに設定します。ShieldHealthManagerの実装Shieldの管理を行うクラスとしてShieldHealthManagerを用意します。ShieldObjectにアタッチ。ついでに、ヒット時に大きさを変えたり、エフェクトを表示する処理も一緒に書いてしまいます。色を変える処理はUpdateメソッドもいじる必要があるので事項で説明します。その際に大きさを変えたりエフェクトを表示するまずは基本の部分として、TakeShieldDamage()メソッドを実装します。0;}EnemyHealthクラスのTakeDamage()メソッドをひな型に、変数の名前を書いたりShieldだけの処理を入れたりしてます。次に、このメソッドの実行元として、PlayerShootingクラスのShoot()メソッドを修正します。null){(略)}(略)}else{(略)}}}(略)}EnemyHealthの判定を行う前にEnemyShieldの判定を差し込んでいます。isTriggerにチェックを入れたColliderでもRayが衝突判定を返してくれるようにUnity側の設定を変更します。Edit>ProjectSetting>PhysicsよりQuerriesHitTriggersにチェックを入れればOKです。ヒット時にシールドの色を変える一定時間Shieldへのダメージがなかったら、ShieldのHPを回復させます。これにより、スナイパーライフル以外の武器で倒すには集中砲火が必要となり、ほかの敵と合わせて出現した時のいやらしさが倍増します。0.95f;}}回復の処理は非常にシンプルですね。HPの値と一緒にShieldの大きさも戻してあげます。シールドの大きさの変化率は数値を直で入れてしまってますが、本当はShieldのHPと、Colliderの大きさとの関係から計算式にすべきです。ややこしくなりそうなので今の段階では先送ってます。ヒット時、Shieldの色にアルファ値を足してあげることで透明度を変更しています。その直後からだんだんと色味を戻すため、Lerp関数を使っています。これはぜひ引き出しとして持っておきたい手法。これにてShieldの実装は完了~~!!動かしてみて、攻撃を当てるたびに色が変わって小さくなること、HPがゼロになったら消滅すること、スナイパーライフルでは中身ごと攻撃できることを確認したらおしまいです。