質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Q&A

1回答

1420閲覧

Unityで,速さの2乗に比例する空気抵抗を実装したい

yuumaa

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

0グッド

0クリップ

投稿2021/08/05 05:43

前提・実現したいこと

Unity上にて、バドミントンのシャトルの軌道を再現しようとしています。
しかし、シャトルに加わる空気抵抗が実装できずに困っています。
シャトルの運動方程式は
x方向 ma=-k|V|Vx
y方向 ma=mg-k|V|Vy
(kの値は任意)

このようになります.つまり各方向それぞれ速さと各方向の速度ベクトルを比例定数にかけているというふうになります.
私が実装しようとした方法では、初速度は自分で最初に設定して、速度に応じてx方向とy方向の空気抵抗をシャトルに与えるようしましたが、その空気抵抗の実装の仕方が分かりません.各方向の速度ベクトルを取得してx方向とy方向に空気抵抗を実装していただきたいです.どなたか解決方法を教えていただきたいです。
よろしくお願いいたします.

該当のソースコード

public class force : MonoBehaviour { private Vector3 latestPos; float speed; GameObject player; void Start() { player = GameObject.Find("blue"); Rigidbody rb = GetComponent<Rigidbody>(); Vector3 force = new Vector3(20.0f, 20.0f, 0.0f);//初速度の実装 rb.AddForce(force, ForceMode.Impulse); } void Update() { var speed = (player.transform.position - latestPos) / Time.deltaTime; latestPos = player.transform.position; //ここに空気抵抗を実装したいです// } }

試したこと

初速度の設定と,速さの取得はできたので,各方向の速度ベクトルを取得してx方向とy方向に空気抵抗を実装していただきたいです.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

x,y方向とか考えずに
速度ベクトルに速度ベクトルの大きさを乗じて定数倍したものを
そのままrigidbodyのAddForceで作用させればよいかと

投稿2021/08/05 12:36

ozwk

総合スコア13532

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ozwk

2021/08/05 12:46

わざわざ前回位置との差分で求めている速度もrigidBodyのvelocityで求まります
yuumaa

2021/08/08 00:43

なるほど、velocityを使うと簡単にできるんですね。私、まだUnityが勉強不足でして、お手数ですが、それを用いて速さの2乗に比例する空気抵抗を実装するスクリプトを送っていただきたいです。
ozwk

2021/08/08 01:57

いやです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問