Unity_小地图制作

在Unity中制作小地图有很多方法,有用Render Texture和Raw Image制作的,也有代码制作的,这里我将演示用代码制做一个简易版的小地图,效果图如下:

一、原理

在ui地图上放置一个ui(image)作为图标,检测角色位于世界的方向以及位置,按比例将方向及位置信息同步到ui相对于地图的位置并实时更新。

二、实现过程

这里我使用空物体搭载相机作为我的角色(直接将相机拖为子物体并Reset),使用Plane为地板搭建场景。

搭建好后转为2D截张图(如果你有地图图片可以在后面直接使用,这里我为了让图片贴合场景随意截图了)

 创建Canvas以及小地图image,在小地图image上创建他的子物体image,这个image作为主角在地图上的位置标识。

将小地图ui上的image的sprite改为你的小地图图片素材,这里我的是截图。注意你图片的TextureType改为Sprite(2D and UI),记得点击Apply

将你小地图image的sprite改为上面的图片,之后更改主角在地图上的标识image,方法与上述相同。这里我使用自带Knob,如果你的ui可以指定方向那更好了。接下来编写脚本:

private RectTransform rect;
public GameObject player;
public GameObject Floor;
public Image playerimage;

void Start()
{
    rect = this.GetComponent<RectTransform>();
    rect.sizeDelta = new Vector2(Floor.transform.localScale.x, Floor.transform.localScale.z) * 100;
    playerimage.rectTransform.sizeDelta = new Vector2(10, 10);
}

void Update()
{
    ShowPlayer();
}

public void ShowPlayer()
{
    playerimage.rectTransform.anchoredPosition = new Vector3(player.transform.position.x, player.transform.position.z, 0)*10;
    playerimage.rectTransform.eulerAngles = new Vector3(0, 0, -player.transform.eulerAngles.y);
}

 将创建好的脚本挂在到小地图的ui,map上,打开脚本获取主角、主角ui、小地图ui以及RectTransform组件,注意UI要调整需要获取RectTransform组件。

对于UI他的位置是RectTransform.anchoredPosition

rect =this.GetComponent<RectTransform>();

表示获取到小地图的RectTransform组件

rect.sizeDelta = new Vector2(Floor.transform.localScale.x, Floor.transform.localScale.z) * 100;

由于世界地图边长为1时相对空物体为10,所以面积相对Player角色为100倍,这里将小地图ui的宽高设置为100。

 playerimage.rectTransform.sizeDelta = new Vector2(10, 10);

表示确定好角色ui显示的宽高。

playerimage.rectTransform.anchoredPosition = new Vector3(player.transform.position.x, player.transform.position.z, 0)*10;

这里更改角色ui的位置。因为plane的边长1相对于空物体边长为10,所以对于角色ui在地图ui上移动时距离需要乘10倍。注意角色移动时是X_Z轴移动,所以在ui中角色ui的y等于世界角色的z。

playerimage.rectTransform.eulerAngles = new Vector3(0, 0, -player.transform.eulerAngles.y);

这里设置角色ui的角度,只需要判断世界角色对于y轴的旋转并给到角色ui的z轴上即可。

三、注意:

1.上述只是完成了简易小地图制作,如果你需要角色移动可以查阅我的文章Unity_角色移动_Translate-CSDN博客
2.更改Canvas的屏幕适应问题,否则地图会变形。更改方式请查阅我的文章,链接如下:Unity_UI适配屏幕尺寸-CSDN博客
结尾:有任何错误请指出,补充请评论,看到会第一时间回复,谢谢。
  • 12
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值