2016-08-07 12 views
-3

enter image description here2dポータルテレポート問題

添付の画像をご覧ください。 3つのブロックにはそれぞれポータルがあり、ポータルは黒の子で、赤いボールがあるので、ボールがポータルに当たってボールが別の2つのポータルから出てくるので、ボールの正しい位置が欲しいそれが出てくるポータル。例えば、ボールがポータルに当たったとき、ボールは同じヒットポイント上の別のポータルから出現するはずである。それは作業イマイチなぜあなたは、回転ポータルの世話をしていません

おかげ

+4

楽しい音。質問ありますか? – JJJ

+0

こんにちは、ありがとうございます。はい、私はボールが別のポータルから出てきたときにボールを正確に配置したいと思います。 – SmartPro123

+0

誰もあなたを止めることはありません;)あなたはこれまでに何を試しましたか、あなたのアプローチには何がうまくいかないのですか? – TheDjentleman

答えて

0

は、それはです。

あなたはこのような何か、各ポータルのtransform.rightは、ポータルの指摘され、Vector.forwardはあなたの2次元平面に垂直であり、ボールがportal2にportal1から起こっている可能性と仮定:
1.計算ベクトルVector3 v = ballhitPoint - portal1.transform.position
2. portal1とportal2間の有向回転決定:同じ量vNew = Quaternion.AngleAxis(r, Vector3.forward)
4.ボールの位置によってfloat r = (Mathf.Atan2(portal2.forward.y, portal2.forward.x) - Mathf.Atan2(portal1.forward.y, portal1.forward.x)) * 180/Mathf.PI
3回しvをredball.transform.position = portal2.transform.position + vNewあなたは、私が理解している場合(達成したいものを要約すると

よあなたはポータル上にヒットポイントを持っており、そのヒットポイントをターゲットポータルに投影したいと思う。

私はこのコードをテストしていませんし、2Dゲームで3Dベクトルをどのくらい正確に使用しているかわからないため、軸に合わせて計算を変更する必要があります。私が使用している関数の詳細については、単体のドキュメントを参照したいと思います。