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

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

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

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

Unity3D

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

Q&A

0回答

977閲覧

AddForceがうまく働かずに途中で加速しなくなってしまいます

159

総合スコア0

C#

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

Unity3D

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

0グッド

0クリップ

投稿2021/11/26 07:06

編集2021/11/26 10:41

前提・実現したいこと

車を生成して(10個ほど数秒空けて同じ座標に生成されます)、その車がもともとあるゆっくり動く前の車に近づくと低速になって止まり、離れると動き出すようにしたい(車の渋滞のようなイメージ)のですが、最初はうまくいきますが、少し経つと加速しなくなり、ゆっくり進むだけになってしまいます。
途中のcar3は生成された車の4つ目の車を少しゆっくりにしてそれ以降の車も正しく動いているかを確認するためのものです。

該当のソースコード

C#

1float Dist = 5.0f; 2 Ray ray; 3 RaycastHit hit; 4 Rigidbody rb; 5 Vector3 force1,force2,force3;; 6 bool flg1; 7 8 private void Start() 9 { 10 rb = this.GetComponent<Rigidbody>(); //Rigidbodyを取得 11 force1 = new Vector3(5.0f, 0, 0); //力を設定 加速 12 force2 = new Vector3(-8.0f, 0, 0); //力を取得 減速 13 force3 = new Vector3(1.0f, 0, 0); //力を設定 低速 14 flg1 = false; 15 } 16 17 void FixedUpdate() 18 { 19 //Rayの作成 20 Ray ray = new Ray(this.transform.position, this.transform.forward); 21 //Rayが衝突したかどうか 22 if(Physics.Raycast(ray, out hit, Dist)) 23 { 24 flg1 = true; 25 Debug.Log("ray=" + this.tag); 26 } 27 28 if(rb.velocity.x <= 10.0f) 29 { 30 if(this.tag == "car3") 31 { 32 Debug.Log("car3"); 33 rb.AddForce(force3); //低速力を加える 34 } 35 else 36 { 37 Debug.Log("加速"); 38 rb.AddForce(force1); //加速力を加える 39 } 40 } 41 42 if(flg1 == true) 43 { 44 Debug.Log("減速"); 45 rb.AddForce(force2); //減速力を加える 46 if(rb.velocity.x >= 0.0f) 47 { 48 Debug.Log("false"); 49 flg1 = false; 50 } 51 } 52 }

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

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

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

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

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

ozwk

2021/11/26 07:31

どこまでうまくいきますか? 前に追いついたら減速して止まりますか?
fana

2021/11/26 08:13 編集

> ゆっくり動く前の車 と一定距離を保つために,このゆっくり動く前の車と同じ速度を保つように動くことになるのでは? (前の車に追いついたら減速する→前の車よりも速度が遅くなったら距離が開く→距離が閾値を超えたら即加速する→するとまた即減速が必要になる→またちょっと離れたから加速→…)
159

2021/11/26 10:27

>ozwk さん 前に追いついたら減速して止まって加速してを2、3回繰り返します。2個目の生成された車が追い付いてきたら加速しなくなってゆっくり動いてしまいます。 最初の車しかうまくいかないので、後ろに車があったらだめなのかなと思ってますが、はっきりとは分かりません...。
159

2021/11/26 10:35

>fana さん 前の車は独立して動いていて、徐々に加速していきます。生成された車が加速しなくなった後は前の車と生成された車の間がどんどん空いていっているので、同じ速度を保ってはないと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問