前提・実現したいこと
unityで六角形の当たり判定を持ったオブジェクトを使って反射の計算をしたいです。
(イメージとしては某スマホアプリのモ○ストっぽいものを作りたいです。。。)
事前に反射の方向を予測(六角形が壁に当たった際の中心点を取得)するために
六角形のraycastが見つからなくどうすればよいか困っています。。。
何か良い方法があれば教えていただけないでしょうか。。。
↓イメージ画像
発生している問題・エラーメッセージ
現在反射の計算をしようとしている最中ですが線のraycastを用いて
六角形の中心からrayを飛ばして、あたった部分からの反射を計算しているのですが
実際には六角形の枠部分が先に当たるため、若干反射がずれてしまいます。。。
↓
![]
お手数をおかけしますが、どうかよろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
勘違いしていたらすみません
やりたいことってこういうことでしょうか?
C#
1 [SerializeField] private Transform[] yellowPoints; 2~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3 float distance = -1; 4 int no = -1; 5 RaycastHit hit = new RaycastHit(); 6 7 for (int i = 0; i < yellowPoints.Length; i++) { 8 ray.origin = yellowPoints[i].position; 9 if (Physics.Raycast(ray, out RaycastHit _hit, 1000)) { 10 if (distance == -1 || distance > _hit.distance) { 11 distance = _hit.distance; 12 hit = _hit; 13 no = i; 14 } 15 } 16 } 17 18 // 1つでもヒットしたら 19 if (distance != -1) { 20 Vector3 reflect = Vector3.Reflect(ray.direction, hit.normal); 21 22 Vector3 diff = yellowPoints[no].position - player.position; 23 float r = diff.magnitude; 24 greenHexagon.position = hit.point - diff.normalized * r; 25 26 line.positionCount = 3; 27 line.SetPosition(0, player.position); 28 line.SetPosition(1, greenHexagon.position); 29 line.SetPosition(2, greenHexagon.position + reflect * 10); 30 }
ちょっと汚いですがこんな感じで↑のGifの緑六角形と線を動かしてます
投稿2020/12/02 17:37
総合スコア300
0
そもそも以下の方法とはどうなんでしょうか?
どうしてもコライダーを使って計算したいのあれば別ですが..
Trigger+移動アニメションを使う
RigidBody2d MovePosition大きいコライダーに入る前と入る後の移動後の位置をpositionを計算します.
はじめ一定の位置から大きいほうのコライダーにmovepositionで移動します.その後Triggeで検知した瞬間に移動後の位置を計算→MovePositionで移動
Trigger+DOTweenを使う
方法としては上記とほぼ同じです.以下略(詳しくはDOTween移動とかで調べてください)
投稿2020/11/29 12:49
総合スコア258
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/29 20:19
2020/11/30 04:28
2020/11/30 05:22
2020/11/30 12:55
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/03 08:42 編集
2020/12/03 12:23
2020/12/03 14:11