見出し画像

役に立たないゲーム開発(Unity)の話。バズーカの発射角度をマウスで制御してうんたらかんたら…

プレイヤーにバズーカを持たせて砲弾を発射までは難なくできたのですが、やっぱりバズーカの角度を変えて撃てたらいいよね!

という事でありがちなゲームの操作性なのに苦戦しまくった話です。

今まではバズーカオブジェクトそのものに砲弾発射スクリプトをアタッチして、プレーヤーの子にしていました。

今回は↓

Playerの子にpivotpointという空のオブジェクトを作ってその子にバズーカを持たせます。

このpivotpointがバズーカの回転軸になるのでx軸を触りながらバズーカがいいところで回転するよう位置を調整しておきます。

そしてバズーカの砲弾発射スクリプトをいじってきます。

まずはこんな感じで変数を宣言します。

上の段が砲弾発射に関する変数で、下が角度制御に関するものです。

ついでにカメラも一緒に回転させたいのでカメラを格納するmainCameraも用意しました。

ついでなので砲弾発射の方も一緒に見ていきます。

上のif文がリロードの処理です。
マウスの左クリックでshootメソッドを呼び出します。

xRotがマウスのY軸(前後)の移動量を取得してます。

次にMathF.Clampで移動範囲に制限をかけます。
直接数値を入力してもいいんですが、unity側で操作しながら数値を調整したいので、pubricのfloat型でminAngle、maxAngleとしておきます。

あとは制限のかかったマウスの移動量を持つxRotをカメラとpivotpointのrotationのx軸に代入すればok

こちらはshootメソッドです。マウスの左クリックで呼び出されるやつですね。

砲弾はリジットボディを持たせてプレハブ化してあるので、それを生成しつつ力を加えて轟音とともに発射!

インスペクターはこんな感じです。

赤枠が今回書いたshootingスクリプトで黄色枠がバズーカの角度に関するパラメータです。

MainCameraにはカメラを格納するんですが、このゲームではスタンダードアセットのマルチポーズなんたらかんたらってカメラ使ってまして↓

このカメラには子にpivotというオブジェクトがあり、こちらでカメラの角度制御をしたいのでこっちをmainCameraに格納します。

そしてインスペクタのpivotには最初に作ったバズーカの親になるpivotpointを格納!

はいできました!

ちなみにこのバズーカはク●ダバズーカと言います。

説明がちょっと雑かもですが備忘録として記事を書いております故🙇‍♂️

結構苦労したんだよ!プログラムとか初心者だし!
苦労の跡↓

どれもこれもうまくいきませんでした。
バズーカが高速回転しだしたり、一定方向にしか回らなかったり…

ていうのもググッて訳もわからず真似してるようじゃだめなんですね。

ちゃんと関数を知ることが必要なんですね。
そうすれば説得力のある?かっこいい?スクリプトが書けると思うんです。

そしていつまで初心者が通用するのだろうか。

この記事が気に入ったらサポートをしてみませんか?