UnityRigidbodyの中で、物体の運動に対する抵抗を設定できるDrag。今回はそのDragの値を変化させて、水中を表現してみます。アクションゲームとかでよくある、ステージ中に水中エリアが出てくる感じのアレです。SierraUnity2018.1.0f24月末にUnity2018が出てたので早速使ってみました。RigidbodyについてRigidbodyのアタッチ方法や各設定項目の説明は、以下の記事で解説しています。pocket【Unity】Rigidbodyの各パラメータは何に使われているの?【解説】https://ekulabo.com/check-rigidbodyパラメータが多く、混乱しがちなRigidbodyについて、各パラメータの意味や用例を解説しています。Unityを使う上でRigidbodyをアタッチする場面も多いので、基本部分から確認したい方におすすめ。言うと、Unityで物理演算を使うために必要なコンポーネントです。今回はその中でもDrag(抵抗)がテーマ。RigidbodyのパラメータDrag(抵抗)についてDragは「抵抗」とか、「引きずる」といった意味の言葉。Unity的には、運動に対する抵抗として使われます。この値が大きければ、Rigidbodyをアタッチしたオブジェクトの運動に抵抗がかかります。分かりやすい例だと、落下時の空気抵抗などがありますね。公式のリファレンスでは、パラシュートを開いたらDragの値を大きくする例が載っていました。今回はこのDragの値を変えたときに、オブジェクトの運動がどう変わるかを実験するとともに、アクションゲームでよく見る水中の表現を作ってみます。転がる時の抵抗RigidbodyのMass(質量)を変えて遊んだ時のように、いくつかのボールを用意し、そのDrag(抵抗)の値を変えて運動にどう影響するか確認してみます。pocket【Unity】RigidbodyのMass(質量)を変えた時の変化についてhttps://ekulabo.com/rigidbody-massUnityのRigidbodyで設定できるMass(質量)について、値を変えると物体の運動がどのように変化するのかを実験しています。衝突時には、Massによって衝突相手に与える影響が計算されるので、物理演算の挙動がおかしくないか確認しておくといいかも。用意したボールは以下の6種類。10抵抗以外の値はRigidbodyをアタッチした時のデフォルトのものになっています。ボールをバウンドさせたかったので、物理特性マテリアルを用意しています。ボタンを押すと全てのボールに同じ力が加わり、運動を開始するシーンを作って比較してみました。ForceModeはImpulseとし、加えた力の大きさは画面左上に表示しています。抵抗の異なるボールを転がすdragは抵抗の大きさなので、これが小さい値だと減衰することなく運動を続けます。dragが10になると、動き出してもすぐに止まってしまいます。同じ質量でも、dragの値によって結構差が出ますね。同じボールを使って、力を加える向きを変え、斜方投射してみます。ForceModeは上と同じくImpulseとし、加えた力の大きさは画面左上に表示しています。抵抗の異なるボールを斜方投射するdragが0だと気持ちよく飛んで行きますが、5とか10だと壁に当たったかのように止まりますね。X軸方向とY軸方向両方の力が0になって、自由落下で落ちているようにも見えます。着地までにX軸方向の運動が減衰しすぎると不自然な感じになっちゃうようです。2あたりまでは、いわゆる空気抵抗のように見えます。重力以外には力が働いていない状態で自由落下させ、dragの値による影響を確認します。pocket【Unity】RigidbodyのMass(質量)を変えた時の変化についてhttps://ekulabo.com/rigidbody-massUnityのRigidbodyで設定できるMass(質量)について、値を変えると物体の運動がどのように変化するのかを実験しています。衝突時には、Massによって衝突相手に与える影響が計算されるので、物理演算の挙動がおかしくないか確認しておくといいかも。上の記事で質量に関しての実験を行った際には、質量が異なっても、同じdragの値であれば同時に落ちました。dragを変えると明らかに差異が出ますね。10にもなるとパラシュートを開いたかのようにゆっくりと落下します。落下速度の調整にも使えそうですが、上昇時も含めて全ての運動でこの抵抗が発生するため、ちょっと考慮が必要かも。水中の抵抗を表現アクションゲームとかだと、若干操作が重くなってもどかしくなるような水中のステージは鉄板。超簡易だけど水中っぽい表現を作ってみました。今回は動きだけの表現なので、見た目を水中っぽくする場合はShader(シェーダー)をいじるべし。やることは簡単で、水中エリアに入ったらDragを増やすだけ。水中に入ったことはOnTriggerEnterで検知できるので楽ちんです。以下の画像では、画面中央の水色で半透明な部分が水中として、このオブジェクトに衝突したときにdragの値を3に変更しています。このオブジェクトを抜けたらdragの値を元に戻します。上の斜方投射では、発射時にImpulseで力を加えています。奥の白いボールはもともとdragの値が0なので、水中に入る前に減衰がなく、かろうじて水中エリアを抜けています。0.5だったボールでも水中を抜け出せていません。dragの値による減衰って結構大きいですね。続いて、一定の力を加え続けた場合も試してみました。ゲームを作るときには、コントローラーなどの操作によって一定の力が加わるケースの方が多いですもんね。一定の力を加えるにあたって、ConstantForceコンポーネントをアタッチしています。スクリプトを書かなくてもいいので、ちょっとした検証なんかには便利。ConstantForceコンポーネント一定の力で画面右に移動するオブジェクトだとこうなります。コントローラーの右キーをずっと押してるイメージね。水中では動きが鈍り、水中エリアを抜けたら再び加速しています。なんとなくそれっぽい感じ。これを調整していけば、水中っぽい表現もよりいい感じにできるはず。今回使ったdragを変えるスクリプトは以下のように記載しました。Gist.水中エリア用のオブジェクトにはタグを設定しておき、そのタグを持った相手との衝突を検知します。ColliderではIsTriggerをtrueにしています。やっていることは衝突に合わせてdragの値を変えているだけなので簡単。まとめRigidbodyのdragを変化させ、オブジェクトの運動にどう影響が出るのか実験してみました。通常の運動のために設定しておくのはもちろんのこと、動的に値を変えてみても面白い表現ができそうです。ゲーム開発の攻略チャートを作りました!「ゲームを作ってみたいけど、何から手を付けていいか分からない!」そんなお悩みをお持ちの方向けに、todoがアプリをリリースした経験を中心に、ゲーム作りの手順や考慮すべき点をまとめたe-bookを作成しました。ゲーム作りはそれ自体がゲームのように楽しいプロセスなので、「攻略チャート」と名付けています。投稿一覧Unityを使ってアプリを作ったり、Assetを作ったりしてる個人開発者。Unity全般ネタとAsset開発の情報を扱っています。Asset開発は日本語の情報が少ないのよね。ことで些細なネタでも情報を蓄積するのが目的です。2018.06.04UnityでRigidbodyのAddForceやAddTorqueを使う際に指定するForceModeについて、その4種類の動きを観察しています。2018.05.31UnityでRigidbodyを扱う際、衝突検知モードを選択することができます。2018.05.17UnityのRigidbodyで設定できるConstraints(制限)について、値を変えると物体の運動がどのように変化するのかを実験しています。2018.05.16UnityのRigidbodyで設定できるInterpolate(補間)について、値を変えると物体の運動がどのように変化するのかを実験しています。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。todoUnityのアセットを作ったり、スマホ向けのアプリを作っています。このブログではUnity初心者に向けたチュートリアルやテクニックを放出しています。詳しいプロフィールはこちら。お仕事の相談や現在提供中のサービスについては、こちらの『サービス内容』のページをご覧ください。Explorers_todoオンライントレーニングのサイトをオープン!エクスプラボを運営しているtodoが、より集中的にゲーム作りについて学べるオンライントレーニングのサイトをオープンしました。エクスプラボのトレーニングルーム』です。勉強したことの進捗も表示できるようになっているので、どれだけ頑張ったのかが分かるようになっています。ゲーム開発の攻略チャート』というe-bookをプレゼントしています。メルマガではゲーム開発のテクニックを中心に役立つ情報をお届けします。詳しくはこちら!お仕事の依頼はこちら!ゲーム開発のサポートも可能!エクスプラボではゲーム開発のサポートのサービスも行なっています。いう場合にオススメのプランです。詳細はこちら!もちろん、普通に開発依頼をいただいてもお手伝いします。その場合はお問い合わせへ。【Unity】ポストプロセシングを使って簡単にプロっぽいゲーム画面を作るゲームの作り方を学べるオンライン講座のサイトをオープンしました!RANKING【Unity】Mathfの切り上げ、切り捨て、偶数丸め。使い分けが大事よねMathf【Unity】ゲームといえばランダム要素。(12)作ったアプリ空とにゃんこと風船と癒し系縦スクロール避けゲーの『空とにゃんこと風船と』(TODOWORKS名義でリリース)気軽に遊べるスマートフォン向けアプリです。ボクセルアートで彩られるどこかレトロ、でも新しい世界で癒されてみませんか?ぼく、猫ですって!タップ系RPG『ぼく、猫ですって!』(TODOWORKS名義でリリース)気軽に遊べるスマホRPG。