Redhuのゲーム開発Fragments

UnityやUEでゲームを作る際に学んだことを、これからなにか作りたい人に向けて。あるいは復習する自分に向けて記す。

自作ゲームリメイク中-ステータスとuGUIの連携編-(Unity制作)

今回は自機のステータスをuGUIに反映する連携編です

 

前回

自作ゲームリメイク中-カメラシステム編-(Unity制作) - Redhuのゲーム開発Fragments

 

まず自機の仕様として、エネルギー制を追加しました。

それに伴い、EN最大値・EN現在値・OB始動消費EN値・OB持続消費EN値・EN自然回復値の変数を用意しました。

ジャンプ、OB成立時、OB持続時に、それぞれエネルギーを消費します。(ジャンプによる消費はOB始動値を使ってます)

 

さて、ゲームとしてはこれらのステータス変動がちゃんと目に見えてなきゃいけません。

そこでuGUIと連動させる必要があります。uGUIについてはだいぶ前に軽くまとめてあります。

Unity4.6のuGUIについてのお勉強 - Redhuのゲーム開発Fragments

 

今回はImageの Image TypeをFilledにして、Fill Amountの値と連動させることで反映させる方法をとっています。画面中央の円形ゲージの右側半分がエネルギーゲージとなります(右側は装甲値の予定)

 

連動用として、Playerが持つ「PlayerBattleUI」というスクリプトを用意しました。

gista1268b7da3aaf880aacf

 

uGUIをスクリプトから弄るためには

using UnityEngine.UI;

の宣言が必要です。

その後、プレイヤーがシーンにあるUIカンバスを見つけて、その中にあるENゲージ用のimageを弄る対象としてセットします。

あとはそのFill Amountの値に、EN最大値/EN現在値 を算出して入れてあげればOKです。

今回は半円ゲージなのでFill MethodをRadial180にしてFill OriginをRightにしてます(もともと左側のゲージだったのでScaleを-1にして)

あとImageはデフォルトでアルファ値が100になるっぽいので薄いと感じたら255にしたり、飾りなのに主張し過ぎだとおもったら50に下げたり調節はしてみよう!

 

次はパーツごとにステータス設定してカスタマイズシステムの根っこを作るか。

はたまた銃を持って射撃攻撃可能となるか。気分次第ですw

 

次回>自作ゲームリメイク中-当たり判定・弾丸編-(Unity制作) - Redhuのゲーム開発Fragments

 

自作ゲームリメイク中-カメラシステム編-(Unity制作)

今回はカメラ操作のシステムについてです。

 

前回

自作ゲームリメイク中-モーションシステム修正編-(Unity制作) - Redhuのゲーム開発Fragments

 

まずウチでは、カメラは以下のように用意してあります

f:id:redhu:20150723003602p:plain

MainCameraBoxという空のオブジェクトを用意し、それに実際のMainCameraとUIを表示する用のUICameraを入れています。

なんでこういうふうにしてあるかはのちのち。

 

ゲーム中のメインカメラ(自機視点)の仕様について。

  • カメラは自機の背後すこし横に位置し、追従する
  • マウスによって操作する
  • 自機の移動に対して一瞬遅れて追従する
  • 左右旋回時、旋回方向によって背後からのカメラ位置を左右切り替える

と言った感じです。

 

さて説明。

GitHub使ったらコードを簡単に見せれるみたいだから使ってみようかと

gist504b7efbcd4ae984d6c8

 

・・・長い 長くない?(バーとかで省略できないんかこれ)

これはPlayerにくっつけるスクリプトです。

シーンが始まると、シーン内に置かれているMainCameraBoxを探して、自機の位置に同調させます。

んでBox内のMainCameraのローカル位置を調節し、機体背後からの視点位置にセットしています。

 

カメラ制御はFixedUpdateを使っています。通常のUpdateで処理するとめっちゃガタついて見れたもんじゃありませんヴォェ(酔

 

Vector3.Lerpを使って、自機の移動に遅延追従する仕組みを入れています。

さらに、縦方向の遅延追従は無しにするようにY座標だけは上書きしています。

いざ動かしてみて縦方向の遅延追従がなんか気持ちよくなかったからですが、べつに上書きして無効化しなくたって問題無いです。

さらにマウスの左右移動値を取ってPlayer自体を回転させます。

機体の旋回はこのスクリプトが行っているということです。

 

さらに左右旋回値の値がそれぞれ一定以上/以下の時に、カメラの背後左右位置を切り替えています。

 

そして、マウスの前後入力値を使って上下視点操作をしています。

回転が0~360度じゃなくて-180~180みたいにゼロをまたいでいるので、そこら辺を修正変換する仕組みをいれつつ。

最後にMainCameraBoxを回転させて視点操作完了です。

MainCameraではなくMainCameraBoxを回転させることで、自機を中心に上下視点を動かすことができます。

 

色んなサイトのスクリプトを参考にしながら魔改造したので、もっと効率的なやり方があるかもしれませんが、動きはすごい気に入ってます。

もしオンライン対戦対応とかになると、自機同調のところとか修正する必要はありそう。

 

次回は・・・少し間があくかもしれません。

予定としては、パーツによるステータス変動実装か、射撃武器使用の実装か。

あ、エネルギーシステムの実装もやらなきゃ。そしてそれができたらuGUIとの連動も。

 

というわけで多分次回は、エネルギーシステム実装&uGUIとの連動ですかね(一番やりやすそう)

 

次回

自作ゲームリメイク中-ステータスとuGUIの連携編-(Unity制作) - Redhuのゲーム開発Fragments

うに部屋さんに置かせて頂いているリメイク対象の旧作

unityroom.com