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

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

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

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

Unity

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

Q&A

解決済

1回答

1659閲覧

unityで2点間の距離から角度を求めに任意の位置に配置する方法

BRAK

総合スコア98

C#

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

Unity

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

0グッド

0クリップ

投稿2021/01/06 04:58

編集2021/01/06 05:01

円状を周回するオブジェクトの配置方法
円の外側にオブジェクト配置し、ゲームを起動したときに円の中点から任意に配置したオブジェクトの角度を求めその位置から移動を開始するというコードを書いたのですが任意に配置した位置とは別の位置に移動してゲームが開始されます。

C#

1コード 2 /// <summary> 3 /// 初期角度 4 /// </summary> 5 float angle; 6 /// <summary> 7 /// 中心軸 8 /// </summary> 9 [SerializeField] GameObject pivot; 10 /// <summary> 11 /// 半径(周る円の半径と自身の半径) 12 /// </summary> 13 const float radius = 1.55f + 0.185f; 14 15 /// <summary> 16 /// 一周する速度 17 /// </summary> 18 const float aroundSpeed = 0.5f; 19 20 void InitAngle() 21 { 22 Vector2 relativePos = transform.position - pivot.transform.position; 23 var rad = Mathf.Atan2(relativePos.y, relativePos.x); 24 //アングルに求めた角度を代入する 25 angle = rad; 26 27 relativePos.x = Mathf.Sin(2 * Mathf.PI * angle) * radius; 28 relativePos.y = Mathf.Cos(2 * Mathf.PI * angle) * radius; 29 var pivotPos = new Vector2(pivot.transform.position.x, pivot.transform.position.y); 30 transform.position = pivotPos + relativePos; 31 }

恐らく角度から配置位置を決めた後からの計算が違うような気がします。

イメージ説明
赤いオブジェクトです

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

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

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

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

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

guest

回答1

0

ベストアンサー

C#

1relativePos.x = Mathf.Sin(2 * Mathf.PI * angle) * radius; // この2πはなに?

投稿2021/01/08 05:40

ozwk

総合スコア13532

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

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

BRAK

2021/01/08 05:44

どっかの記事からとってきた式です。
BRAK

2021/01/08 06:01 編集

動くときの最終的な式はMathf.Sin(一周する速度 * (angle(角度)+Time.deltatime)) * radius(半径)です。
ozwk

2021/01/08 05:49 編集

言い方が回りくどかったですね。2πが要りません 数学を勉強しましょう
BRAK

2021/01/08 05:48

数学勉強してもわからないんですよ。
BRAK

2021/01/08 05:53

2πなくしても位置が初期位置からずれます。 例えば初期位置0度でゲームを実行すると90度の位置にずれます。
ozwk

2021/01/08 05:55 編集

x, yとSin, Cosの対応が逆です
BRAK

2021/01/08 05:56

SinがYでConがXってことですか!
ozwk

2021/01/08 05:57

はい
BRAK

2021/01/08 05:57

できました。ありがとうございます。 数学勉強してもこういったケアレスミスが一生直らないので数学ができないです。
ozwk

2021/01/08 06:02 編集

数学のテストで高得点を取れというわけではないので、 x,y入れ替わりとかそういうケアレスミスは別にいいのですがが、 そのへんから拾ってきた式を意味もわからず使うのはどうかと思います(自分で言ってて耳が痛い)
BRAK

2021/01/08 06:05 編集

出来なかったら手当たり次第ネットの式を当てはめて実行してます。 こういう時は基礎をしっかり勉強しなおすことを心に誓います
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問