原文地址:http://ningtukun.blog.163.com/blog/static/1865414452012711103013811/
在主摄像机的基础上,多新建一个摄像机,命名为minmap_Camera,在其层次面板上,把Projection选项改为orthographic
在project板面上右键新建一个Render Texture,命名为minmap,并拖动到
minmap_Camera 的层次面板Target Texture中
写脚本minmap.cs
using UnityEngine;
using System.Collections;
public class minmap: MonoBehaviour
{
public GameObject hero;//主角
public float walkDistance = 1;//俯视摄像机离主角身后的距离
public float height = 1;//俯视摄像机离主角的高度
public RenderTexture minmap_texture;
public Material minmap_material;
private GameObject minmap_Camera;
public float offset;
void Awake()
{
minmap_Camera = GameObject.Find("minmap_Camera"); ;
//储存俯视摄像机
hero = GameObject.Find("hero");//储存主角
offset = 10;
}
void Start()
{
//找不到主角
if (hero == null)
{
Debug.Log("minmap's hero is gone!");
return;
}
else
Camerafowller();
}
void OnGUI()
{
if (Event.current.type == EventType.Repaint)
{
Graphics.DrawTexture(new Rect(Screen.width-256-offset,offset,150,150),
minmap_texture,minmap_material);
}
}
void Update()
{
Camerafowller();
}
//保证俯视摄像机时刻跟随着主角
public void Camerafowller()
{
minmap_Camera.transform.position = new Vector3(hero.transform.position.x, hero.transform.position.y + height,
hero.transform.position.z - walkDistance);
minmap_Camera.transform.LookAt(hero.transform);
}
}
将它拖到
minmap_Camera中
新建一个平面,命名为
minmap_Plane
拖动
minmap到
minmap_Plane,并在
minmap_Camera
的层次面板把X,Y,W,H设为0,0,1,1.这是应该会看到
minmap_Plane呈现出场景的一角
这时,在
project板面上右键新建一个shader,命名为
MaskShader,双击
MaskShader
打开编辑器
写下代码:
Shader "Custom/Mask" {
Properties
{
_MainTex ("Main Texture", 2D) = "white" {}
_Mask("Mask Texture",2D)="white"{}
}
SubShader
{
Tags{"Queue"="Transparent"}
Lighting On
Zwrite off
Blend SrcAlpha OneMinusSrcAlpha
pass
{
SetTexture[_Mask]{combine texture}
SetTexture[_MainTex]{combine texture,previous}
}
}
}
在
project板面上查找一个名叫
minmap的
Materials(材质),在其层次面板上把shader选项改为
Custom/Mask,
这时main texture为
minmap,mask texture为
mask
mask图片大致为这种(PNG)
好啦!现在把要跟随的目标,
minmap(
Render Texture
) ,minmap(
Materials)都拖到
minmap_Camera的
minmap的脚本中,运行即可