パスワードを忘れた? アカウント作成
14972299 journal
日記

yumeの日記: Unity制作 メデューサ・ゲーム #31 1

日記 by yume

メデューサ・ゲーム(仮)

ステージを追加
現在のステージ総数:23

●猫続き
猫を救出する方法を
「石化させずにステージクリア」から「猫に触れてからクリア」に変更。
猫に触れたら頭に載せるように。

●バグ修正
手動リスタートを行った後、捕まってゲームオーバーになると自動的にシーンがリセットされない不具合

●ゴール
ゴールに乗った時、ゴールが完全に起動するまでプレイヤーの視野角を0にしたい。
(つまり、ゴールを起動している間にシャイ兵士に視線をやって強引に止めたりできないようにしたい)
いきなり0にするだけなら簡単だが、これを例えば1秒ほどかけて徐々に0にしていく……という処理にするとちょっとややこしい。
シンプルに考えるなら、C#スクリプトでFOV現在値をちょっとずつ減らす関数を毎フレーム呼び出すなどすればよいだろう。C#で使えるイージングの関数も探せばありそうだ。
でも、UnityのAnimationで制御する方法はないだろうか?
Animationは任意の変数をいじることができる。しかし目標値はリテラルで入力している。この目標値を何らかの変数から呼び出して使えるならいいんだけど。
例えば視野角60degreeのプレイヤーがゴールにのったとき、1秒かけて視野角0に持っていくが、途中で離脱したとき視野角60degreeまで戻る、というところの、60という数字が変数で定義できればそれでよい。
qiita @ OKsaiyowa曰く、
・アニメーションの再生時間を正規化した値を読み取れる
・正規化した再生時間と変えたい変数をほにゃららすればよい

うーん……。それはそれでちょっと複雑だな……。それならイージング関数でうまいことやった方がいいかも?

悩みすぎても仕方ないので、プレイヤーの視野角はゲーム中変えることはない! と信じて、一旦アニメーションで決め打ちしておこう。

ついでにゴールのアートとアニメーションもやろう。
「ゴールに乗っていてしばらく待つ」ということをプレイヤーにしてもらうには、ゴールに乗った瞬間から何らかのリアクション(そして徐々に進行していく何か)が表現として必要だ。
ここでは、床にあるゴール円が徐々に広がっていくというものにした。効果音が使えるようになれば、この辺りももっとわかりやすくできるかもしれないが、それでも音無しで問題なくプレイできるようにはしておきたい。

ゴールに乗ると:
・扉の目が開く
・床の円が徐々に広がっていく
・円が広がり切ると、ドアが開くアニメーションが始まる
・ドアが開ききると、ステージクリア

ステージ偏移に暗転とかも欲しい。ステージがロードしきれていない場合とかもカバーできるし。
しかしゴール関連で思ったより時間を食ってしまったので、それはまた今度。

typodupeerror

犯人は巨人ファンでA型で眼鏡をかけている -- あるハッカー

読み込み中...