Unityを使った3Dゲームの作り方(かめくめ)ゲーム開発エンジンUnityを使った3Dゲームの制作に参考になる情報を公開しています。2016.02.14前回までに作ったガンシューティングの機能で敵を攻撃する事が出来るようになりました。Unityでバイオハザード風ガンシューティングの機能を作ってみるUnityでバイオハザード風ガンシューティングの機能を作ってみます。今回は銃を構えた時にレーザーポインターの表示とシューティングポイントの表示、銃を撃った時に光を表示してみたいと思います。gametukurikata.com2016.02.11Unityのゲームでバイオハザード風に照準を合わせられるようにするUnityのゲームで初期のバイオハザード風に上半身の角度を変え、照準を合わせるような機能を作成していきます。gametukurikata.com2016.02.13が、シューティングポイントの当たっている部分が何もない空間に浮いているように見えてしまいます!これは敵の当たり判定はCharacterControllerのコライダを使っており敵を包むような空間(大ざっぱな当たり判定)になる為、シューティングポイントはコライダの接触したポイントになってはいますが、空中に浮いているように見えてしまいます。これでは大雑把な当たり判定のアクションゲームになってしまいますので、当たり判定個所を細かく分けて設定するようにしましょう。どこに当たったかによって得点を変えたり、与えるダメージを変更したりすることも出来ます。言っても特別難しい事はしません(今までやってきた方にとっては)。今までの機能作成の流れは以下の記事で確認出来ますので、このスクリプトは何?と思ったら確認してみてください。Unityを使った3Dゲームの作り方(かめくめ)の歩き方Unityを使った3Dゲームの作り方(かめくめ)で、はじめてUnityの学習をする時の当ブログの記事を読む順番を書きました。機能を積み上げていく形になるので便利かも?gametukurikata.com2019.06.21スポンサーリンク体の部位によって細かく当たり判定を作るそれではやってみましょう。Emptyで空オブジェクトを作り名前を設定します。それぞれの部位の形にあったコライダを追加します。↑のように手や足、胴体といったボーンの子要素に当たり判定部分を作成していきます。コライダの位置と角度をそれぞれの部位と合わせます。Triggerにチェックを入れスクリプトから使うようにし、物体としては存在しないものとします。今回設定した敵キャラは腕はひじからよく曲がるのでひじから上と下にわけました。自体にコライダを設定せず空のゲームオブジェクトを作ってコライダを設定した理由はボーンにコライダを設定するとコライダをうまく調整出来ない為です。空のゲームオブジェクトにコライダを設定すれば空のゲームオブジェクトを移動や回転させて敵の部位とコライダを合わせやすくなります。当たり判定に使うものはすべてTagとLayerをEnemyHitに変更します。することで銃の当たり判定でHit名前のそれぞれの部分が攻撃の当たり判定に使われます。Tagを指定したのは剣で攻撃した時に当たり判定のコライダかどうかの判別に使う為です。上のような感じで当たり判定部分を設定しました。なんだか段ボールを使って作ったヒーローみたいになってますね・・・・。今回はタグとレイヤーの両方でEnemyHitを作成しますが、レイヤーだけ作ってスクリプトのタグで判定している個所をレイヤーで判定するようにしても大丈夫です。試してみましょう↑のようにかなり細かく当たり判定が出来るようになりました。当たり判定にしており、敵にはEnemyタグとEnemyレイヤーを設定していました。今回敵の子要素に当たり判定を細かく分けた為、当たり判定の処理を変更する必要があります。剣の攻撃の当たり判定を処理しているAttackSwordスクリプトを修正します。col.ClosestPointOnBounds(transform.position));}}}タグをEnemyからEnemyHitに変更します。このまま実行すると剣が敵のHit系のゲームオブジェクトのコライダとの接触判定が出来ません。CharacterControllerを取り付けたゲームオブジェクトのタグをEnemyHitにするとCharacterControllerのコライダは当たり判定が出来ます。ここら辺はUnityのOnCollisionとOnTriggerイベントの受け取りを検証するUnityのコリジョン(OnCollision)とコライダ(OnCollider)のイベントが呼ばれる為の条件を検証してみました。gametukurikata.com2016.04.01の記事を参照してください。Kinematicにチェックを入れます。することでEnemyHitとの当たり判定をする事が出来ます。遠距離攻撃である銃を撃った時の処理をしているShotスクリプトの当たり判定を修正します。敵との当たり判定でEnemyレイヤーを指定していた箇所をEnemyHitに変更します(2か所?)。("EnemyHit")次に敵のEnemyスクリプトを取得していた箇所は親のEnemyスクリプトを取得する必要があるので、hit.collider.GetComponentInParent<Enemy>().GetState()123hit.collider.GetComponentInParent<Enemy>().GetState()↑のようにGetComponentからGetComponentInParentにしてEnemyスクリプトを取得します。今回は近接攻撃と遠距離攻撃ともにHit系ゲームオブジェクトを当たり判定の対象にしましたが、銃で細かい部位を狙う遠距離攻撃はHit系のゲームオブジェクトのコライダを当たり判定にし、剣で大雑把に攻撃する場合は敵の移動に使っているCharacterControllerのコライダを当たり判定にするというのもいいかもしれません。敵のボーンに細かくコライダを設定したことで部位ごとに攻撃をすることが出来るようになりました。ここでひとつ問題が発生します。それは主人公が敵のHit系のゲームオブジェクトのコライダの上に乗ってしまうことがあります。HitRightLowerFootゲームオブジェクトのコライダの角度や高さによっては主人公のCharacterControllerの設定によってはその上に乗れてしまいます。そこでレイヤーコリジョンマトリクスを使ってEnemyHitレイヤーと主人公のPlayerレイヤーの接触をしないように設定します。(主人公はCharacterControllerを取り付けた親だけにPlayerレイヤーを設定していることとします)。Settingsウインドウを開きます。MatrixでEnemyHitとPlayerのチェックを外します。これで主人公が敵の上に乗る事がなくなりました。当たり判定のコライダを増やしての感想これで当たり判定を細かくする処理は完了です。剣で攻撃する場合に敵の当たり判定部位と接触する度に攻撃がヒットする為、1回の剣の振りで、手、体、足の三か所に当たる可能性があります。その為、剣の攻撃力を少し抑えた方がいいかもしれませんね。(^_^;)ボーンの稼働域とHitコライダを設置する位置が合っているか確認するには、Unityの実行ボタンを押して、Sceneタブに切り替え敵キャラを選択してスクリプトで歩かせてみるとわかりやすいです。敵キャラの動きによってコライダの動きも同じように移動、回転しているかどうか確認出来るので間違いがないです。言っている本人が確認出来ていなかったという落ちになります。コピーかめくめちゃんをフォローする7Unityを使った3Dゲームの作り方(かめくめ)Unityを使った3Dゲームの作り方(かめくめ)関連記事プログラムUnityで簡単なタイピングソフトを作成するUnityで簡単なローマ字入力タイピングソフトを作成してみます。問題をランダムに選びタイピングが成功した場合、失敗した場合の処理等を行います。プログラムUnityでキャラクターの移動と会話処理を切り分けるUnityでキャラクターの移動と会話処理を切り分けて、人に話を聞いている時は主人公キャラクターはその場に留まり話が終わるまで動かないようにします。プログラムUnityで移動するカーソルを止めるイベントの作成とイベント部分にカメラをフォーカスする機能Unityのアクションゲーム等で登場する移動するカーソルを止めるイベントの作成とイベント部分にカメラをフォーカスする機能を作成していきます。プログラムUnityのゲームで操作キャラクターを切り替える機能Unityのゲームで操作キャラクターを切り替える機能を作成します。操作出来るキャラクターが複数いる時に自分で操作するキャラクターを切り替えたい事があります。その為の機能を作成していきます。プログラムUnityのゲームにスキルツリーのシステムを搭載するUnityのゲームにスキルを覚えたかどうかや次のスキルを覚えるのに必要なスキルポイントの表示等を行うスキルツリーシステムを搭載します。プログラムUnityで巨大な敵の作成をするUnityで巨大な敵を作成し、見回りや主人公キャラクターを見つけた時に追いかけ攻撃をする処理を作成していきます。Unityのゲームでバイオハザード風に照準を合わせられるようにするUnityのレイヤー毎に接触判定の設定をするホームプログラムスポンサーリンクサイト内検索が出来ますプロフィール管理人のかめくめちゃんです。(-_-)メールはこちらにお願いします(記事に関する質問は送らないでください、返信は期待しないでください(._.))。kamekumechan@gmail.comいずれはSIRENやバイオハザードみたいなアクションゲームを作りたいと思っています。ゲームシナリオが書けないので面白いゲームはなかなか作れません・・・・。(^_^;)名前の由来はカメが好きだからです。プロフィールになってないな・・・・(-.-)Unityをこれから始める人へこれからUnityを使ってみようという方はUnityを使った3Dゲームの作り方(かめくめ)の歩き方Unityを使った3Dゲームの作り方(かめくめ)で、はじめてUnityの学習をする時の当ブログの記事を読む順番を書きました。機能を積み上げていく形になるので便利かも?gametukurikata.com2019.06.21の記事に記載の順番で見て頂くとUnityの基本的な使い方がわかり、簡単なアクションゲームや、TPSゲームの作成までが出来ます。自作タイピングゲームタイピングゲームを作りました。WebGL形式なのでPCのブラウザで遊べます。以下からプレイ出来ます。FinalTypingUnityを使って作成したローマ字入力のタイピングゲームです。gametukurikata.com2022.01.02お知らせ2023/01/24個人的にUnity2022.2.3f1をインストールしました。2022/10/14UnityのIKを使って足の位置と角度を地面に合わせる機能Unityのゲームでキャラクターの両足が別の高さの地面の上にある時にそれぞれの足をそれぞれの地面につけるようにする機能を作成しますgametukurikata.com2016.04.11機能を少し修正しました。2020/09/19コメント欄は閉鎖しました。今までコメントを投稿してくださった方はありがとうございました。(^^)/2018/08/07わたくしに出来る事は既に記事にしてあるので、ブログ右上の検索窓を活用してください。(._.)またブログの最初の方の機能を積み上げていく記事に関しての疑問点は当ブログ記事のスクリプトの説明と寄せられた質問への回答Unityを使った3Dゲームの作り方(かめくめ)の機能積み上げ形式の記事のスクリプトの説明と寄せられた記事の機能についての質問への回答を掲載しています。gametukurikata.com2019.08.01Unityを使い始めたばかりの人がつまづきやすい点を解消するUnityを使い始めたばかりの人が結構な確率で陥る不具合や疑問点を解消していきます。基本的にはブログに寄せられた質問への回答という感じです。gametukurikata.com2018.12.04も参照してみてください。小・中学生によるデジタルコンテンツ開発の全国大会ですuycc.unity3d.jp2022年大会の先行エントリーが開始されているようです。当ブログはハイスピードプランです。WordPressの編集画面の動作が早くなった。当ブログはハイスピードプランです。WordPressの編集画面の動作が早くなった。記事の内容に質問がある方へUnityを使った3Dゲームの作り方(かめくめ)の歩き方UnityのJavaScriptとC#を読み替えてどちらでも対応出来るようにするホーム検索トップサイドバータイトルとURLをコピーしました。