总是指向北罗盘

时间:2017-01-05 10:07:26

标签: c# unity3d

我可以通过实施tutorial here来制作Compass。这是完美的代码。

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
}

我想用箭头改变bliptex,但它无法正常工作。失去指南针图像的中心。 enter image description here

1 个答案:

答案 0 :(得分:1)

您需要在

中设置rect的大小
GUI.DrawTexture(new Rect(0, 0, 120, 120), compBg);

并相应地设置中心位置

blipX += 55;
blipY += 55;

我假设120和55是基于他正在使用的纹理大小的值,因为您正在使用不同的纹理,您需要适当地设置纹理的大小。

希望这有帮助