I am able to make Compass through implementing a tutorial here. Here is the code which is working perfectly.
using UnityEngine;
using System.Collections;
/// <summary>
/// 2d GUI Compass
/// </summary>
public class CompassWithDirectionMovement : MonoBehaviour
{
#region Vars
public Transform player;
public Texture compBg;
public Texture blipTex;
#endregion Vars
#region UnityEvents
void OnGUI()
{
//GUI.DrawTexture(new Rect(0, 0, 120, 120), compBg);
//GUI.DrawTexture(CreateBlip(), blipTex);
GUI.DrawTexture(new Rect(0, 0, 120, 120), compBg);
GUI.DrawTexture(CreateBlip(), blipTex);
}
#endregion UnityEvents
#region CustomMethods
Rect CreateBlip()
{
//calculating player's angle
Debug.Log("Player LocalEulerY" + player.eulerAngles.y);
float angDeg = player.eulerAngles.y - 90;//bliper goes on Top
float angRed = angDeg * Mathf.Deg2Rad;//Convert degree to radian;
Debug.Log("Mathf.Cos(angRed) : "+ Mathf.Cos(angRed));
Debug.Log("Mathf.Sin(angRed) : "+ Mathf.Sin(angRed));
//calclulate blipper postion
float blipX = 25 * Mathf.Cos(angRed);//25 pixel from center
float blipY = 25 * Mathf.Sin(angRed);
Debug.Log("blipX : "+ blipX);
Debug.Log("blipY : "+ blipY);
blipX += 55;//half of the size of the background of compass which is center and slight minus it
blipY += 55;//
Debug.Log("blipX : "+ blipX);
Debug.Log("blipY : "+ blipY);
return new Rect(blipX, blipY, 10, 10);
}
#endregion CustomMethods
}
I want to change bliptex with arrow but its not working correctly. loosing the center of the compass image.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…