Unity3d 小地图上的玩家位置

Unity3d 小地图上的玩家位置,unity3d,fieldofview,Unity3d,Fieldofview,我做了一个小地图,我和相机的不一样。 视野:玩家在小地图上的位置是正确的,但玩家的视点(相机)可以看到另一个与视野相关的点 小地图类别: using UnityEngine; using System.Collections; using UnityEngine.UI; public class MiniMap : MonoBehaviour { public Transform Target; public Image meImage; public RawImag

我做了一个小地图,我和相机的不一样。 视野:玩家在小地图上的位置是正确的,但玩家的视点(相机)可以看到另一个与视野相关的点

小地图类别:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class MiniMap : MonoBehaviour
{
    public Transform Target;

    public Image meImage;
    public RawImage minimap;
    public GameObject rotatingCube;
    public float Scale = 10;

    Vector2 XRotation = Vector2.right;
    Vector2 YRotation = Vector2.up;

    private RectTransform rectTransform;

    private void Start()
    {
        rectTransform = GetComponent<RectTransform>();
    }

    private void LateUpdate()
    {
        XRotation = new Vector2(Target.right.x, - Target.right.z);
        YRotation = new Vector2(-Target.forward.x, Target.forward.z);
    }

    public Vector2 TransformPosition(Vector3 position)
    {
        Vector3 offset = position - Target.position;

        Vector2 newPosition = new Vector2(-offset.x, -offset.z);
        return newPosition;
    }

    public Vector3 TransformRotation(Vector3 rotation)
    {
        return new Vector3(0, 0 , Target.eulerAngles.y - rotation.y);
    }

    public Vector2 MoveInside(Vector2 point, Rect rect)
    {
        Rect mapRect = GetComponent<RectTransform>().rect;
        point = Vector2.Max(point, mapRect.min);
        point = Vector2.Min(point, mapRect.max);

        point.x = Mathf.Min(point.x, mapRect.width / 2 - rect.width);
        point.y = Mathf.Min(point.y, mapRect.height / 2 - rect.height);
        return point;
    }
}
使用UnityEngine;
使用系统集合;
使用UnityEngine.UI;
公共类小地图:单一行为
{
公共转型目标;
公众形象;
公共图像小地图;
公共游戏对象旋转立方体;
公众浮存规模=10;
Vector2 x旋转=Vector2.right;
矢量2旋转=矢量2.up;
私有矩形变换;
私有void Start()
{
rectTransform=GetComponent();
}
私有更新()
{
x旋转=新矢量2(Target.right.x,-Target.right.z);
旋转=新矢量2(-Target.forward.x,Target.forward.z);
}
公共向量2转换位置(向量3位置)
{
矢量3偏移=位置-目标位置;
Vector2 newPosition=新的Vector2(-offset.x,-offset.z);
返回新位置;
}
公共向量3旋转(向量3旋转)
{
返回新矢量3(0,0,Target.eulerAngles.y-rotation.y);
}
公共向量2移动内部(向量2点,矩形)
{
Rect mapRect=GetComponent().Rect;
点=矢量2.Max(点,mapRect.min);
点=向量2.Min(点,mapRect.max);
point.x=Mathf.Min(point.x,mapRect.width/2-rect.width);
point.y=数学最小值(point.y,mapRect.height/2-rect.height);
返回点;
}
}
光点等级:

    using UnityEngine;

    public class Blip : MonoBehaviour
{
    private MiniMap map;

    private RectTransform myRectTransform;
    public bool KeepInBounds = true;
    public bool LockScale = false;

    public Transform Target;

    private void Start()
    {
        map = GetComponentInParent<MiniMap>();

        myRectTransform = GetComponent<RectTransform>();

        var rectTransformMap = GetComponentInParent<RectTransform>();
        myRectTransform.localPosition = new Vector2((rectTransformMap.rect.width - myRectTransform.rect.width) / 2, (rectTransformMap.rect.height - myRectTransform.rect.height) / 2);
    }

    private void LateUpdate()
    {
        Vector2 newPosition = map.TransformPosition(Target.position);
        newPosition.x -= myRectTransform.rect.width / 2;
        newPosition.y -= myRectTransform.rect.height / 2;

        if (KeepInBounds)
            newPosition = map.MoveInside(newPosition, this.myRectTransform.rect);

        myRectTransform.localPosition = newPosition;
    }
}
使用UnityEngine;
公共类闪电:单一行为
{
私人小地图;
私有矩形变换;
公共bool KeepInBounds=true;
公共布尔锁标度=假;
公共转型目标;
私有void Start()
{
map=getComponentParent();
myRectTransform=GetComponent();
var rectTransformMap=getComponentParent();
myRectTransform.localPosition=新向量2((rectTransformMap.rect.width-myRectTransform.rect.width)/2,(rectTransformMap.rect.height-myRectTransform.rect.height)/2);
}
私有更新()
{
Vector2 newPosition=map.TransformPosition(目标位置);
newPosition.x-=myrectcransform.rect.width/2;
newPosition.y-=myrectcransform.rect.height/2;
如果(保留边界)
newPosition=map.MoveInside(newPosition,this.myRectTransform.rect);
myRectTransform.localPosition=newPosition;
}
}

详细和有针对性的问题在哪里?为什么不使用链接到播放器顶部并渲染到纹理的相机?您可以提供一些屏幕截图吗?详细和有针对性的问题在哪里?为什么不使用链接到播放器顶部并渲染到纹理的相机?您可以提供一些屏幕截图吗?