Unityを使った3Dゲームの作り方(かめくめ)ゲーム開発エンジンUnityを使った3Dゲームの制作に参考になる情報を公開しています。2018.08.26今回は巨人がジャンプして地面に着地した時等に発生するサークル状の衝撃波の作成をしてみたいと思います。今回作成する衝撃波はProBuilderで作ったオブジェクトを衝撃波に見立て、主人公キャラクターに当たるとダメージを与えるようにします。パーティクルシステムで同じような機能を作成出来ますが、そちらはUnityのパーティクルシステムを使ってサークル状の衝撃波を作成するUnityのパーティクルシステムを使って巨人が落下した時のサークル状の衝撃波を作成していきます。gametukurikata.com2018.08.29を参照してください。上のような感じのものが出来上がります。スポンサーリンク衝撃波の作成ProBuilderで衝撃波のモデルを作成するまずは衝撃波のモデルをProBuilderで作成していきます。ProBuilderに関しては、Unity2018から標準搭載されるProBuilderを使ってみるUnity2018から標準搭載されるProBuilderを使うとUnity内で3DCGの作成が出来るので、ゲームの屋内ステージ等を作成するのに非常に便利です。そこで今回はProBuilderの詳細を見ていきます。gametukurikata.com2018.03.27を参照してください。ToolでTorusを選択し、ドーナツのモデルを作成します。上のような感じにして、サークル状のモデルを作成します。ヒエラルキー上で名前をCircleShockwave0とします(名前は適当に付けてください)。上のようになりました。Pivotを押し、サークルの真ん中を基点とします。Pivotアイコンをクリックすると、基点がサークルの中心になります。これで衝撃波のゲームオブジェクトが出来たので、ExportでUnityのプレハブに変換します。ExportアイコンをクリックしてAssetを選択し、Unityのプレハブにします。Exportの設定画面を開くにはAltキーを押しながらExportアイコンをクリックし、Assetを選択し、保存先を指定します。プレハブが出来たらヒエラルキー上のCircleShockwave0を削除して、プレハブにしたCircleShockwave0をヒエラルキー上にドラッグ&ドロップします。次に衝撃波用のマテリアルの設定を行います。Assetsエリア内で右クリック→Create→Materialを選択し、名前をCircleShockwave0とします。上のような感じで設定を行いました(マテリアルは自由に設定してください)。作成出来たらCircleShockwave0ゲームオブジェクトにドラッグ&ドロップして設定をします。Rigidbodyの取り付けとコライダの取り付け衝撃波はサークル状のゲームオブジェクトの大きさを段々と大きくして表現します。Colliderコンポーネントの取り付けを行います。Dynamicを選択して速い動きにも対応出来るようにします。詳しい設定は次のスクリプトの作成後に画像を掲載します。サークル状のゲームオブジェクトに設定するスクリプトの作成サークル状のゲームオブジェクトが出来たので、このゲームオブジェクトを時間と共に大きくして衝撃波を表現するようにします。その為、CircleShockwave0に新しくCircleShockwaveScriptスクリプトを作成し取り付けます。0f;}}}このスクリプトでは一定時間が経過したらゲームオブジェクトのScaleを大きくし衝撃波に見立てる処理と、一定時間が経過したら衝撃波を削除する処理を記述しています。サークルを大きくする処理内でコメントにしてある処理がありますが、これはScaleをX、Y、Z軸ですべて大きくしていくと見た目が相対的に大きくなっていいんですが、衝撃波のコライダがキャラクターとうまく当たらない場合があります。Y軸のScaleを大きくしないようにすると当たるようになりました。それがコメントにしてある処理です。これで衝撃波が完成しました。CircleShockwave0のインスペクタでTagに新しくShockwaveを作り、設定しておきます。衝撃波のインスペクタは上のようになりました。衝撃波が出来たので、次は衝撃波と衝突してダウンするキャラクターを作成していきます。キャラクターにはスタンダードアセットのEthanを使い、CharacterControllerの取り付けと設定、AnimatorControllerの作成とAnimatorへの設定を行っておきます。AnimatorControllerの作成AnimatorControllerは上のような感じで作成します。アニメーションパラメータはFloat型のSpeed、Trigger型のDamageを作成します。Selfのチェックを外してDamage→Damageという遷移をしないようにしておきます。Timeにチェックをして、それ以外の条件はなしにしておきます。今回キャラクターはジャンプ出来るようにしますが、ジャンプ中にジャンプアニメーションは再生しないようにしています。キャラクター操作スクリプトの作成キャラクター操作スクリプトParticleShockwaveCharaを作成しキャラクターに設定します。state;}}スクリプト内の処理に関しては他の記事でもだいぶやっているので、詳細は省きます。簡単に言うとノーマル状態の時は地面を歩き、ジャンプボタンを押すとジャンプします。ダメージ状態の時はダメージアニメーションが終了したらノーマル状態に戻します。衝撃波との衝突を検知するスクリプト次に衝撃波と衝突したかどうかを検知するスクリプトを作成していきます。衝撃波の方からキャラクターを検知する事が出来なかったので、今回はキャラクターに取り付けたCharacterControllerで衝撃波の方を検知したいと思います。キャラクターにCollisionShockwaveスクリプトを作成し取り付けます。true);Debug.Log("接触");}}}Startメソッドでキャラクター操作スクリプトParticleShockwaveCharaとCharacterControllerを取得しています。CharacterControllerで接触した相手を検知するにはOnControllerColliderHitメソッドを使用する必要があります。その中で接触した相手がShockwaveタグを設定していて、自身の状態がダメージ状態でない時にキャラクター操作スクリプトParticleShockwaveCharaのDamageメソッドを呼び出しダメージ処理を行います。衝撃波は物理的に当たるようにしている為、一度キャラクターと衝撃波が接触したらPhysics.IgnoreCollisionメソッドを使って自身のCharacterControllerのコライダと接触した衝撃波のコライダの衝突を無視するようにしています。Physics.IgnoreCollisionを使えばわざわざレイヤー設定を変更する必要がなくお互いのコライダの衝突無視をすることが出来るので便利です。これでキャラクターの作成も終わりました。キャラクターのインスペクタは上のようになります。衝撃波、キャラクターの作成が終わり、試しに衝突させようと思いますが、どうせなら衝撃波をどんどん生成し確認を容易にしたいと思います。CameraにInstantiateParticleスクリプトを作成し取り付けます。particlePrefab.transform.rotation);}}}}インスペクタで作成した衝撃波のプレハブを設定出来るようにしています。地面をクリックした位置に衝撃波を生成するようにしています。地面のゲームオブジェクトのインスペクタのLayerにあらかじめFieldレイヤーを作成し、設定しておいてください。今回作成した衝撃波はProBuilderで作った物理的にキャラクターと当たる衝撃波です。その為、キャラクターとぶつかった時に衝撃波のコライダが物理的にキャラクターを除けるような感じになります。一度衝撃波と衝突したら同じ衝撃波には二度三度とぶつからないようにしたいところです。接触した際に物理的な接触を解除したい場合はキャラクターのCharacterControllerを無効化するか衝撃波のコライダを無効化したりする必要があります。そんなわけで一度キャラクターと衝撃波が衝突した場合はPhysics.IgnoreCollisionメソッドを使ってお互いのコライダの衝突を無視するようにしていますが、最初の衝突時はキャラクターのコライダが少し浮いてしまいます。Triggerを有効にする為にはConvexを有効にする必要があります。Convexを有効にするとサークル状の中身(ドーナツの穴)も有効になってしまうのでドーナツ部分、ドーナツの穴の部分のコライダが接触範囲となってしまいます。そんなわけで思うような衝撃波を作るには少々面倒くさい事になっていきます。今回の記事では元のサークル状のゲームオブジェクトのScaleを少しづつ大きくして衝撃波を表現している為、キャラクターに当たっているように見えて当たらない事があります。いう理由もあって次回はパーティクルシステムを使ってサークル状の衝撃波を作成していきます。Unityのパーティクルシステムを使ってサークル状の衝撃波を作成するUnityのパーティクルシステムを使って巨人が落下した時のサークル状の衝撃波を作成していきます。コピーかめくめちゃんをフォローする7Unityを使った3Dゲームの作り方(かめくめ)Unityを使った3Dゲームの作り方(かめくめ)関連記事プログラムUnityでダメージを受けてHP表示バーを減らす時にダメージ量をわかりやすくするUnityでアクションゲームやRPGゲーム等でダメージを受けた時にHPのバーを減らす時に受けた分のダメージ量がわかるような機能を作っていきます。プログラムUnityでシーンを移動した時のデータやゲームオブジェクトの引き継ぎUnityのゲームで別のシーンに移動した時に前のシーンで使っていたデータを今のシーンで使う方法を考えていきますプログラムUnityのゲームで上下に動く床、ベルトコンベアーを作成するアクションゲーム等によくある床が上下に動いたり、ベルトコンベアーのようにキャラクターを押し戻すような機能をUnityで作成していきたいと思います。CharacterControllerを使ったキャラクターでもベルトコンベアーの影響を与える事が出来ます。プログラムUnityで間違った重力の計算をしているかも!?Unityのキャラクター等に重力を働かせる事は多いですが、重力を働かせる処理が実は間違っているかもしれません。プログラムUnityのコンソールに表示されるスクリプトの警告文の内容を見て修正するUnityのコンソールタブに表示される警告の意味を理解し、警告表示をなくしていきますプログラムUnityでScriptableObjectを使ってアイテムデータベースを作成するUnityでScriptableObjectを使ってアイテムデータベースを作成し、そこからアイテム情報を引き出せるようにします。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をコピーしました。