[UnityUI]简易的小地图制作

1.新建两个layer,一个为Ground,一个为MapSign

2.新建一个camera,命名为MiniMapCamera,将Culling Mask设置为Ground和MapSign,将Projection设置为Orthographic,并让它俯视地面

3.新建一个Render Texture,并将它赋值给MiniMapCamera中的Target Texture

4.新建一个RawImage,将Render Texture赋值给Texture

5.新建一个Image,将一张圆形遮罩图赋值给它,为Image添加Mask组件,并让RawImage成为它的子物体

如无意外,你将看到类似这样的画面:



6.最后,为MiniMapCamera添加一个脚本,负责跟随角色并且不让边界以外的东西显示出来即可!另外,如果显示的地图标记是箭头,只需将箭头成为角色的子物体,就可以无需计算箭头的转向。

using UnityEngine;
using System.Collections;

public class MiniMapCameraFollow : MonoBehaviour {

	private Transform playerTra;
    private float xMin;
    private float xMax;
    private float zMin;
    private float zMax;

	// Use this for initialization
	void Start () 
	{
        //自动计算边界值
        GameObject player = GameObject.FindGameObjectWithTag("Player");
        GameObject ground = GameObject.FindGameObjectWithTag("Ground");
		playerTra = GameObject.FindGameObjectWithTag("Player").transform;

        Vector3 playerSize = player.GetComponent<MeshFilter>().mesh.bounds.size;
        Vector3 groundSize = ground.GetComponent<MeshFilter>().mesh.bounds.size;
        Vector3 playerScale = player.transform.localScale;
        Vector3 groundScale = ground.transform.localScale;

        float cameraSize = GameObject.FindGameObjectWithTag("MiniMapCamera").GetComponent<Camera>().orthographicSize;

        float x = groundSize.x * groundScale.x / 2 - playerSize.x * playerScale.x / 2 - cameraSize / 2;
        float z = groundSize.z * groundScale.z / 2 - playerSize.z * playerScale.z / 2 - cameraSize / 2;

        xMin = -x + ground.transform.localPosition.x;
        xMax = x + ground.transform.localPosition.x;
        zMin = -z + ground.transform.localPosition.z;
        zMax = z + ground.transform.localPosition.z;
	}

	// Update is called once per frame
	void Update () 
	{
        float x = Mathf.Clamp(playerTra.localPosition.x,xMin,xMax);
        float z = Mathf.Clamp(playerTra.localPosition.z,zMin,zMax);
        transform.position = new Vector3(x,5,z);
	}
}

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Unity3D是一款强大的游戏开发引擎,可以用于制作各种类型的游戏,包括小地图。小地图可以帮助玩家在游戏中快速定位自己的位置,了解周围的环境和目标位置。下面是制作Unity3D小地图的步骤: 1.首先,需要创建一个小地图的背景图。可以使用2D图片或者3D模型作为地图的背景。根据游戏的需求选择合适的背景。 2.接下来,创建一个摄像机对象,并将其设置为渲染到一个RenderTexture上。RenderTexture是一个可以用于将某个摄像机渲染的图像输出到纹理的类。在这个RenderTexture上设置小地图的尺寸和位置。 3.将创建的摄像机对象添加到主摄像机上。这样可以实现将主摄像机的渲染图像投影到小地图的背景图上。 4.创建小地图上的角色或者目标的图标。可以使用2D图片或者3D模型作为图标,根据游戏需求选择合适的样式。 5.根据角色或者目标的位置,将图标放置在小地图的对应位置上。可以通过坐标转换等方式将世界坐标转换为小地图上的坐标。 6.在游戏进行中,更新小地图上的角色或者目标的位置。可以通过实时获取角色或者目标的位置信息,然后将图标移动到对应的位置。 7.可以在小地图上添加一些标记物,比如重要地点、敌人位置等。这样可以帮助玩家更好地了解游戏世界的结构和情况。 通过以上步骤,就可以制作出一个基本的Unity3D小地图。当然,在实际制作中还可以根据游戏的需求进行一些定制和优化,比如添加一些特效、增加互动功能等,以提升游戏体验。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值