注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天涯倦客的博客

祝福你朋友永远快乐!

 
 
 

日志

 
 

unity圆形小地图  

2016-06-07 11:27:49|  分类: unity3d |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
在主摄像机的基础上,多新建一个摄像机,命名为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的脚本中,运行即可

  评论这张
 
阅读(108)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017