搭建简易游戏场景:
创建Plane作为地形并命名为Background,注意更改图层以便小地图的摄像机渲染到(我这里使用UI),,,如下图:(注意要附上材质,纯色不便于观察主角是否发生了移动)
接着创建主角(我这里用胶囊体代替),并且编写脚本控制主角的移动和摄像机跟随,,,设置它的图标,其属性设置如下图:
然后创建出敌人,并且编写脚本让他自己移动,,,敌人的图标也和主角一样,做为自己的子物体存在,注意更改相机渲染层,并且更改上自己的图标,,,
接下来就是创建出小地图的渲染摄像机了,,我让摄像机作为主角的子物体,并且更改为正交模式,渲染层把不需要的剔除(我这里地形和图标都放在了UI层,所以只渲染UI层),摄像机属性设置如下图:(size是摄像机的照射范围)
接下来我们在Project面板上右键–Create–Render Texture,创建出要显示小地图Texture命名为MinMapTexture,,然后指定到渲染小地图的摄像机上,(即上图的Target Texture),,,
然后创建出我们想要的小地图形状的这遮罩材质球:属性设置如下图:
在Costom目录下没有Mask的同学请点击:http://pan.baidu.com/s/1c19TArI,,
将下载下来文件夹添加到工程中再次设置,,,
最后,我是用UGUI的Raw Image 接收MinMapTexture,,将其显示在游戏场景中,,,
这样运行游戏即可看到,小地图的效果,如下图:
参考代码:
主角移动代码:
using UnityEngine;
public class PlayerMove : MonoBehaviour {
public GameObject Camera;
public float speed = 4;
// Use this for initialization
void Start () {
Camera = GameObject.Find("Main Camera");
Camera.transform.Rotate(new Vector3(30, 0, 0));
}
// Update is called once per frame
void Update () {
float x = Input.GetAxis("Horizontal");
float y = Input.GetAxis("Vertical");
this.transform.Translate(new Vector3(0,0,y) * speed *Time.deltaTime);
this.transform.Rotate(new Vector3(0, x, 0));
}
private void LateUpdate()
{
Camera.transform.position = this.transform.position+new Vector3(0,5,-8);
}
}
敌人自行移动的代码:
using UnityEngine;
public class EnemyMove : MonoBehaviour
{
public float speed = 2;
void Update()
{
float x = Random.Range(0, 1f);
float y = Random.Range(0, 1f);
this.transform.Translate(new Vector3(0, 0, y) * speed * Time.deltaTime);
this.transform.Rotate(new Vector3(0, x, 0));
}
}