FPSを作ってみよう13-JavaScriptからC#への書き換え-

今回はFPSを作ってみようのカテゴリで作ってきたスクリプトをJavaScriptからC#へと書き換えていきます。

今回は休憩記事ですね!

つい最近もどこかで見たような・・・・(;一_一)

前回は

FPSゲームで銃を撃った時に敵との当たり判定をする機能を作成していきます。銃の向きにレイを飛ばしレイが敵に当たった時に敵を削除するようにします。

銃を撃った時の当たり判定を行いました。

スポンサーリンク

JavaScriptからC#への書き換え

当ブログは1年以上にわたってJavaScriptでスクリプトを記述してましたが、現在ではC#へと切り替えを行いました。

以前の記事はそのままJavaScriptのままにしておきますが、『FPSを作ってみよう』のカテゴリでは機能を積み上げていくカテゴリなので今回C#へとスクリプトを書き換えましょう。

書き換えのやり方としてはJavaScriptのスクリプトと同名のC#スクリプトを作り、JavaScriptで書いたスクリプトの内容をコピーしたらC#スクリプトのクラスの中身に貼り付けます。

フィールドや変数の部分をまず書き換えてから保存し、コンソールに表示されるエラーの内容を見ながら細かい部分を修正していきます。

動作していたものが動かなくなる可能性もあるので、WindowsパソコンならばCドライブのマイドキュメントにあるプロジェクトファイルをコピーしておくといいかもしれません。

全てのスクリプトの書き換えが終了したらJavaScriptを設定しているゲームオブジェクトに同名のC#スクリプトを取りつけます。

JavaScriptのスクリプトのインスペクタの設定値を見ながらC#のスクリプトのインスペクタの設定値も同じように変更します。

C#の設定値を変更したら取りつけていたJavaScriptをRemove Componentします。

AssetsフォルダにあるJavaScriptのファイルは念の為に取っておいてもいいかもしれません。

今まで作成してきたスクリプトは

CameraTransform、HandIK、MyChara、Shot、WeaponStatus

になります。

CameraTransformはMusasiの子要素のMainCamera
HandIK、MyCharaはMusasi
Shotは武器に設定していますが、今回Musasiに設定するように変更します。
WeaponStatusは武器(makarob)に設定しています。

C#への書き換えに関しては

UnityのJavaScriptとC#を読み替えてどちらでも対応出来るようにする。Unityでは特殊なJavaScriptとC#でプログラミングする事が出来ますが、この違いがわからずC#をJavaScriptで読み替える事が出来ない事があります。そんな時にそれぞれの言語を読み替えられるように違いを調べてみます。

を参考に書き換えてみてください。

書き換え時の補足情報

一部解り辛い部分があったので補足しておきます。

MyCharaスクリプトで走っているかどうかを判定している部分で

とInput.GetAxis(“Run”)で判定していましたが、C#だとbool型でないと判定出来ずエラーになるので

でRunに対応するボタンが押されているかどうかで判断するように変更します。

Shotスクリプトを武器自体に設定していましたが、これをMusasi君に設定するようにします。

Shotをそれぞれの武器に設定する必要もなく、武器全てに同じShotスクリプトを設定しているのもどうかと思いましたので・・・・。

またフィールドのMuzzle(銃口)をpublicにしてインスペクタで設定していましたが、武器を切り替える機能を搭載した時の切り替えが出来なくなるので、

武器を装備しているEquipゲームオブジェクトを入れるフィールドをpublicで宣言し、Startメソッド内でMuzzleを取得するようにします。

インスペクタで銃の親要素であるEquipをequipに設定します。

その子要素の最初(GetChild(0))からFindメソッドを使ってMuzzleで検索しゲームオブジェクトを設定します。

次にWeaponStatusスクリプトに宣言しているWeaponTypeです。

WeaponTypeはpublicを付け、クラスの外に出して外部のスクリプトからも参照出来るようにしておきます。

その他の修正は先ほどのJavaScriptとC#の読み替えの記事を見て修正するようにしてください。

エラーが出やすい部分としてはフィールドや変数の宣言部分、for文をforeachに書き換え部分、コンポーネント取得時にGetComponentの後にある.を削除する、レイを使った処理でRaycastHitの変数の前にoutを付けるといった部分になります。

終わりに

今回は単なるC#への書き換えについての記事でFPSとは直接関係ないです。

次回の記事の機能を作成する前に以前の記事を参考にしていた方で、武器をキャラクターに持たせる時にヒエラルキーに武器を配置しゲームオブジェクトのScaleでサイズ調整していた方は

FPSゲームでIKを使って銃に手を合わせていきます。またblenderでうまくアニメーションが出来ない人用に両手にIKをほどこしUnityのAnimationで銃を持ったり、構えたりするアニメーションを作成するやり方も載せています。

の記事を参考にモデルの銃のScale Factorを調整してキャラクターのサイズに合わせるようにしてください。

ヒエラルキー上のゲームオブジェクトのScaleを調整すると、子要素に何かのゲームオブジェクトがあり、そのゲームオブジェクトの移動や回転をしようと思うとうまくいかなかったりその他不具合の温床にもなりかねないので必ず確認してください。

スポンサーリンク

記事をシェアして頂ける方はこちら

フォローして頂くとやる気が出ます