Unityを使った3Dゲームの作り方(かめくめ)Unityを使った3Dゲームの作り方(かめくめ)ゲーム開発エンジンUnityを使った3Dゲームの制作に参考になる情報を公開しています。0今回は主人公が銃を構えた状態で照準を合わせる事が出来るようにします。今回の機能は以前作成した機能に処理を追加する形で作成していますので、このスクリプトは何?と思ったら以下の記事で今までの機能作成の流れを確認出来ます。Unityを使った3Dゲームの作り方(かめくめ)の歩き方Unityを使った3Dゲームの作り方(かめくめ)で、はじめてUnityの学習をする時の当ブログの記事を読む順番を書きました。21:43前回の記事で銃を構えて、銃からレーザーポインタが表示され(厳密には銃からじゃなくレーザーポインタからレーザーですが・・・)、弾が当たったかどうか判定するところまで作成しました。Unityでバイオハザード風ガンシューティングの機能を作ってみるUnityでバイオハザード風ガンシューティングの機能を作ってみます。今回は銃を構えた時にレーザーポインターの表示とシューティングポイントの表示、銃を撃った時に光を表示してみたいと思います。14:49しかし一度構えてしまうと構えた状態から動けず照準を敵に合わせるという事が出来ませんでした。今回は照準をブレさす(日本語がおかしい?)機能も追加します。↑のような感じに仕上がりました。バイオハザードとはちょっと違いますが、これはこれで面白く出来そうな気がします。照準を合わすには銃を構えた状態で↑↓←→のキーを押した時に上半身だけを一定方向に向かせるようにします。主人公のアニメーターコントローラーを変更します。Passにチェックを入れます。するとOnAnimatorIKというイベントが発生するようになるので、そのイベントを受け取り実行するメソッドを主人公操作スクリプトのCharacterScript内に記述していきます。この特別なメソッドは、例えばキャラクターの手の位置を他のオブジェクトの位置に合わせたい時などに使用します。これに関してはUnityのIKを使ってキャラクターがはしごを登るアニメーションを作るUnityのIKを使ってキャラクターがはしごを登るようなアニメーションを作成していきます。20:19を参考にしてください。体の一部(ボーン)を動かすスクリプト体の一部を動かすスクリプトを作成していきます。CharacterScriptスクリプトにボーンの角度を変更する処理を追記していきます。フィールド宣言部まずはフィールド宣言部です。184.6721f);キーボードの上下左右のキーを押した時にSpine(脊椎)のボーンのX軸とZ軸を元に回転させますので、その回転値を宣言します。無限に回転が出来ると人間ではなくなるので、それぞれ変化出来る限界角度を指定しておきます。銃を構えた時のSpineにあたるボーンのX軸とZ軸の角度を調べておき、その角度を初期角度として保持しておきます(アニメーションによって角度は変わります)。後で銃を構え終わった時に角度を取得して設定しますが、念の為rightShoulderAngleとleftShouderAngleに手動で初期角度を設定します。調べる方法はアニメーターコントローラーのIdleに銃を構えるアニメーションを設定し、銃を構え終わった時の主人公の右肩と左肩のTransformのRotationの値を調べます。今回キャラクターにはEthanを使い、SpineにあたるボーンはSpine1となっていますが、キャラクターに取り付けたボーンによってはX、Y、Z軸の向きが違う場合があるので、キャラクターによってX、ZではなくXとYを使う可能性もあるので注意してください。rotateSpeedは1秒間に回転する角度を指定します。useHandBlurは手ブレを使用するかどうかで、handBlurDegreeは手ブレの度合いを設定します。isHoldGunは銃を構え終わった時にtrueにします。OnAnimatorIKメソッドOnAnimatorIKメソッドの中身は以下のようになります。false;}}銃を構える状態で銃を構え終わっている時に↑↓←→のキーが押されている間はspineXAxisとspineZAxisの値を変化させます。それぞれの限界角度を超えないようにMathf.Clampを使って数値を最低値と最大値の間に制限します。角度の変更値に初期角度を足してボーンの角度を計算しますが、360度を越えては困るのでMathf.Repeatを使って0~360以内に納めます。lastSpineRotZ));でHumanBodyBones.Spineに設定されている骨の部分の角度をさきほど指定した値に設定します。Y軸の角度は変更しないのでそのままの角度を設定します。キャラクターによっては↑のキーを押したら右に傾くといった事もあります。Boneの設定の仕方やBoneの向いている角度が問題だと思われます。角度指定の場所でZに指定していたyをYの所に指定したりして、調整します。以下のように設定する可能性もあります。0);↑はあくまでも例です。false;}Input.GetButton(“Fire2”)を押していない時は角度の増減に利用したspineXAxis、spineZAxisは0にしておきます。ないと構えが終わった後もキャラクターの上半身の角度が変わったまま歩いたりしてしまう為です。Input.GetButton(“Fire2”)を押していない時という条件が入っているのは、押して上半身の角度を変えている時に敵から攻撃を受けた際に角度がリセットされるのを防ぐためです。銃を構え終わった時に実行するメソッド銃を構え終わった時に実行するメソッドを作成します。true;}}InitializeShotは銃を構え終わった時に実行するメソッドです。銃を構え終わった時の角度が設定されていなければそれぞれの角度を保持します。InitializeShotメソッドを呼び出すためにアニメーションクリップの最後にReadyShotというイベントを作ります。アニメーションイベントに関してはUnityのアニメーションイベントを使うUnityのアニメーションイベントを使い、歩くアニメーションで地面に足を着いた時に足音を鳴らしたり剣を振っている途中で剣を振った時の音を鳴らしたりしたいと思います。20:25を参考にしてください。アニメーションイベントを受け取っているProcessCharaAnimEventというスクリプト内(名前はそれぞれ違うと思いますが)でキャラクター操作スクリプトのInitializeShotを呼び出すようにします。{characterScript.InitializeShot();}主人公操作スクリプトのInitializeShotメソッドを呼び出します。これで銃を構えるアニメーションで銃を構えたらReadyShotというアニメーションイベントが発生し、それをProcessCharaAnimEventで受け取ってキャラクター操作スクリプトCharacterScriptのInitializeShotメソッドが呼ばれます。その時に『銃を構え終わった』というisHoldGunをtrueにし、角度を保持しています。上半身が動くか確認する主人公に設定したCharacterScriptスクリプトのインスペクタで角度の設定をして、確認してみてください。上のように上半身の角度の変更が出来るようになりました。これでかなりガンシューティングっぽくなってきました。終わりにこれで構え終わってから上半身の角度の変更が出来るようになりました。ここまで来たらほぼバイオハザードですね(違)(;一_一)次回は敵キャラの当たり判定が大雑把なのでもう少し厳密にしてみようかと思います。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。サイト内検索が出来ますプロフィール管理人のかめくめちゃんです。(-_-)メールはこちらにお願いします(記事への質問はコメント欄にお願いいたします)。kamekumechan@gmail.comいずれはSIRENやバイオハザードみたいなアクションゲームを作りたいと思っています。ゲームシナリオが書けないので面白いゲームはなかなか作れません・・・・。(^_^;)名前の由来はカメが好きだからです。Д`)シクシク...お知らせ2020/01/18個人的にUnity2019.2.18f1をインストールしました。2020/01/01あけましておめでとうございます。(^^)/ユニティちゃんのRPGを作ってみようのPartyStatusスクリプトでpartyMembersのListの型がCharacterStatusとなっていたのでAllyStatusに変更しました。変更したというか、元々AllyStatusに書き換える前のスクリプトを掲載していたので修正しました。ユニティちゃんのRPGを作ってみよう10ーコマンド画面の作成とステータスの表示ーユニティちゃんのRPGでコマンド画面の作成とステータスコマンドを作成し、選択したキャラクターのステータスを表示するようにしていきます。20:00GetPartyStatusメソッドの戻り値もそれに伴って変更しています。2018/08/07コメント欄へのわたくしの返信は停止しております。わたくしに出来る事は既に記事にしてあるので、ブログ右上の検索窓を活用してください。(._.)またブログの最初の方の機能を積み上げていく記事に関しての疑問点は当ブログ記事のスクリプトの説明と寄せられた質問への回答Unityを使った3Dゲームの作り方(かめくめ)の機能積み上げ形式の記事のスクリプトの説明と寄せられた記事の機能についての質問への回答を掲載しています。21:41も参照してみてください。コメントの返信はありませんが、回答は記事に反映されている可能性があります。当ブログはハイスピードプランです。WordPressの編集画面の動作が早くなった。Unityを使った3Dゲームの作り方(かめくめ).。