2016-03-23 9 views
0

C#(Unity3d)の正方形の点で内接円の点を取得する方法は? 円マスクでミニマップを作っています。私は地図の境界に南のマーカーが欲しい。ミニマップが正方形である場合 私は最大coordiantesをカルクすることができます:私が正しくあなたの質問を理解していればC#(Unity3d)の正方形の点で内接円の点を取得する方法

Rect mapRect = GetComponent<RectTransform>().rect; 
    point = Vector2.Max(point, mapRect.min); 
    point = Vector2.Min(point, mapRect.max);` 
+0

マーカーの位置が固定されているのか、それとも回転していますか?固定されている場合は、円の中心から円の高さの半分または円の半径を追加するか、rect xの半分の幅とyの長さを追加することができます。いくつかの方法があります。 –

+0

私は手伝っていますが、私はその質問を理解できません。 – Fattie

+0

ここにRectTransformのドコがあります。かなり明確です。http://docs.unity3d.com/ScriptReference/RectTransform.html – Fattie

答えて

1

はうーん..あなたは、マップ上のいくつかの指定されたポイントを指す種類の矢印を作成したいです。種類の青本の矢印のように:

http://www.wowace.com/media/images/56/83/Bloodhound2.jpg

まあ、私はマスクされたミニマップの中心に「プレイヤー位置」オブジェクトを作成することから始めます。これをミニマップの中心とプレイヤーのためのUIオブジェクトの単純な参照として使用します(図の青と銀の矢印など)。次に、微積分を使用して、ミニマップの中心とマーカーとの間の角度を決定することができます。計算では、角度はarctan(y/x)に等しい。 2つの位置の間では、arctan [(最初のy - 秒y)/(最初のx - 秒x)]と等しくなります。 Unityでは、Mathfを使用してこれらの機能を実行できます。変数 'marker'がマーカーのRectTransformであるとしましょう。 'playerMarker'は、先ほど作成した最小値でのプレーヤーのUIオブジェクトのRectTransformです。

float yDistance = marker.anchoredPosition.y-playerMarker.anchoredPosition.y; 
    float xDistance = marker.anchoredPosition.x-playerMarker.anchoredPosition.x; 
    float angle = Mathf.Atan(yDistance/xDistance); 

これで正しいアングルが得られたので、矢印をそのアングルの位置と回転に設定できます。我々はすぐに回転を設定することができます。矢印のRectTransform変数として 'arrow'を使用しましょう。

arrow.rotation = Vector3(angle * Mathf.Rad2Deg, 0, 0); 

位置については、より多くの計算を使用する必要があります。私たちは矢印がplayerMarkから一定の距離だけ離れていることを望んでいますが、特定の角度にします。距離は、ミニマップの半径より少し小さくする必要があります。この距離を「矢印距離」と呼んでみましょう。矢印の位置を設定するには:

arrow.anchoredPosition.x = playerMarker.anchoredPosition.x + arrowDistance * Mathf.Cos(angle); 
    arrow.anchoredPosition.y = playerMarker.anchoredPosition.y + arrowDistance * Mathf.Sin(angle); 

これはそうです。これはテストされていません。誰かが間違いを見つけたら、それを指摘してください。お役に立てれば!

+0

私はあなたの写真(http://prntscr.com/aj8y4v-赤い枠線)。 –

+0

oh。さて、エディタで新しいUIテキストオブジェクトを作成してください。それを円の上部に置き、テキストを 'N'とします。それははるかにシンプルなhahahです。 – Sokco

+0

私はミニナップで追跡されるscnene(私の南である)の私のいくつかのゲームオブジェクトが欲しいです。 –

関連する問題