Cmaera圆形小地图

来源:互联网 发布:个人简介html源码 编辑:程序博客网 时间:2024/04/30 20:05

原文地址: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)
unity圆形小地图 - ebirdfighter - ebirdfighter的博客
 
好啦!现在把要跟随的目标, minmap(Render Texture ,minmap(Materials)都拖到minmap_Camera的minmap的脚本中,运行即可
0 0