[Unity3d]自制圆形小地图

继续今天的学习心得,unity中小地图的制作,实现了小地图中红色小箭头代表场景中的主角,然后人物方向的转变,小地图中箭头也随之改变方向。

效果图                                                                                                                         

右上角就是小地图,上面有个红色小箭头就是代表主角人物所在场景中的位置,箭头的方向就代表人物所面向的方向。

实现步骤                                                                                                                     

1.俯视图的制作

首先,我们将Scene场景调成俯视的角度

然后在创建一个Plane,然后点击该对象,在Inspector属性窗口将MeshRenderer取消,

并且在场景中会发现有绿色的网格,

然后记录网格所在的位置,并且取消MeshCollider,用截图工具截取这网格所在的位置,截出一张一模一样大小的图片,这就是我们小地图的来源。截取好了之后记得将MeshCollider勾选上,后面会在代码中需要计算人物所在的位置,也就正是通过这网格文件来计算的。

2.代码的编写

using UnityEngine;
using System.Collections;

public class map : MonoBehaviour {

    public Texture map1;//小地形图
    public Texture jueseTexture;//标识角色的图片
    float juesePosX = 0;
    float juesePosY = 0;
    public GameObject player;//角色
    public GameObject plane;//地形
    float planeWidth;//地形的宽
    float planeHeight;//地形的高  

    float angle = 0; //人物旋转的角度

    void Start()
    {
        //获取地形的宽高
        planeWidth = plane.GetComponent<MeshFilter>().mesh.bounds.size.x * plane.transform.localScale.x;
        planeHeight = plane.GetComponent<MeshFilter>().mesh.bounds.size.z * plane.transform.localScale.z;
        print("width+heith:"+planeWidth + ", " + planeHeight);
        print("bounds:" + plane.GetComponent<MeshFilter>().mesh.bounds);
    }
    void OnGUI()
    {
        GUI.DrawTexture(new Rect(Screen.width-map1.width, 0, map1.width, map1.height), map1);

        GUIUtility.RotateAroundPivot(angle, new Vector2((Screen.width - map1.width)+juesePosX + 5, juesePosY + 5));

        GUI.DrawTexture(new Rect((Screen.width - map1.width)+juesePosX, juesePosY, 10, 10), jueseTexture);
    }

    void Update()
    {
        print("people:" + player.transform.position.x + "," + player.transform.position.y);
        print(1);
        //根据palyer在plane的比例关系,映射到对应地图位置。
        juesePosX = map1.width * player.transform.position.x / planeWidth + map1.width / 2;
        juesePosY = map1.height * (-player.transform.position.z) / planeHeight + map1.height / 2;

        print("x:" + juesePosX + "y:" + juesePosY);

        angle = player.transform.eulerAngles.y-90;
        print("angle:" + angle);
    }
}

将该脚本拖放到Plane上,参数说明:JueseTexture是指小地图中箭头的图片,Player是人物模型的Controller,Plane是指当前带网格的Plane,Map1是指小地图的图片。

当然还有一种KGFMapSystem的插件,用来制作小地图就更炫更专业了,这里只是一个粗糙的小地图。你也可以尝试用一下更专业的插件来开发。

更专业的插件开发小地图请看:http://blog.csdn.net/dingxiaowei2013/article/details/18669919

==================== 迂者 丁小未 CSDN博客专栏=================

MyBlog:http://blog.csdn.net/dingxiaowei2013             MyQQ:1213250243

Unity QQ群:375151422        cocos2dx QQ群:280818155

====================== 相互学习,共同进步 ===================

 

转载请注明出处:http://blog.csdn.net/dingxiaowei2013/article/details/18571083

附加:添加遮罩实现圆形小地图

效果:

实现步骤:

1.准备一个场景的缩略小地图,用相机照着,相机呈现出来的相投影到RenderTexture上

2.新建遮罩shader

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}
  }
 }
}

3.新建一个材质球,并附上上面的shader,选择对应的白色圆形遮罩图和相机呈的相RenderTexture


4.将刚刚创建的材质赋给UITexture【NGUI】即可

时间: 2024-10-28 07:54:56

[Unity3d]自制圆形小地图的相关文章

[Unity3d]使用摄像机制作实时显示小地图

Unity3d中使用摄像机制作实时显示小地图,以之前的tank为例.开始制作之前场景中物体如图. 开始制作,步骤1:新建一个camera及一个plane.对齐位置,将camera改名为camera_UI.旋转plane,使之在camera_UI中显示为竖直状态.效果如下图: 其中,camera_UI及plane设置如图.position位置,在tank前方并在视野范围内能看到即可. 步骤2:为场景中物体添加Layer,以保证后面步骤中的camera正确显示. 分别为terrain及UI.分别选中

[Unity3d插件KGFMapSystem]非常不错的小地图的制作

在我们开发游戏或者虚拟现实中,一般都会用到小地图,如果要我们去写小地图,应该会花费一点时间的吧,如何加快我们的开发速度呢,其实在unity 3d中就有一个"小"插件,是专门用开开发小地图用的,这个插件就是KGFMapSystem.这个是它的官网. http://www.kolmich.at/documentation/ (KGF里面不只是有一个这样的插件,它里面有很多插件,有兴趣的朋友可以研究一番).   首先我们倒入这个插件包,打开kolmich/KGFMapSystem/demo/

PS自制水彩笔刷打造绚丽背景

  水彩笔刷不仅提供给CG设计师们一类画笔资源,同时,当我们在做网页设计时也不可或缺.水彩的透明感能传递小清新气质,所以在设计时,不妨考虑使用水彩笔刷作为修饰,能让设计变得更温暖.柔和. 如果你认为水彩笔刷必须动用到现实中的水彩笔刷"就地取材",那就大错特错了.今天我们要学习的就是如何使用AI自制水彩笔刷. 一.从一个圆形开始 打开AI,新建一个800px*800px的文档,在空白的画布上画上一个正圆.正圆填充蓝色,关闭描边. 选中这个正圆,然后进入[对象>创建渐变网格],在对话

Unity3D资源分享

 都是网上找的连七八糟的资料了,整理好分享的,有学习资料,视频,源码,插件--等等 东西比较多,不是所有的都是你需要的,可以按  ctrl+F 来搜索你要的东西,如果有广告,不用理会,关掉就可以了,如果有密码 6789 链接地址永久有效,慢慢下载啊. 这个是最全的.  ****************************************  *  文件名称:CG_Unity3D_游戏实战教程  *  下载地址1:http://www.t00y.com/file/61325782  * 

Android自定义view实现圆形、圆角和椭圆图片(BitmapShader图形渲染)_Android

一.前言 Android实现圆角矩形,圆形或者椭圆等图形,一般主要是个自定义View加上使用Xfermode实现的.实现圆角图片的方法其实不少,常见的就是利用Xfermode,Shader.本文直接继承ImageView,使用BitmapShader方法来实现圆形.圆角和椭圆的绘制,等大家看我本文的方法后,其他的类似形状也就都能举一反三来来画出来了. 二.效果图: 三.BitmapShader简介 BitmapShader是Shader的子类,可以通过Paint.setShader(Shader

德国科技网站自制iPhone5原型机(图)

德国网站PS出的iPhone 5原型机照片 新浪科技讯 北京时间9月30日上午消息,德国科技网站GIGA.de昨天根据现有信息自制了一款iPhone 5原型机,并且公布了该原型机的多张照片. GIGA.de称,现有信息显示iPhone 5将比现有的iPhone更薄,并将配备尺寸更大的4英寸显示屏,而最明显的改变则是采用了"泪珠"设计. 这款原型机长109.98毫米,宽59.94毫米,顶部厚度为6.86毫米,底部仅为5.33毫米,比iPhone 4略薄.由于采用圆边设计,因此拿在手里的手

牢房中的“创意” 自制越狱工具

     现实世界是有界限的,而想象力却漫无边际.它能够无拘束地闯入任何最漫无边际的地方,高高耸立的牢墙也阻挡不住想象力的穿梭.相反,牢狱正是想象力最能肆意发挥的"舞台",且看看本文为您带来囚犯们自制的十五大"创意"工具! 越狱之神奇工具--锯子      在霍和纳斯伯格监狱治疗区没收到的一把小锯子,由一个简易衣架加上锯线与刀片构成.如此看来,在狱中服刑人员参加劳动的时候发放锯子并不是一个太好的主意.   越狱之神奇工具--床单绳梯         或许,你常常在在

ios-iphone中的圆形相框效果

问题描述 iphone中的圆形相框效果 想用下面的代码实现一个圆形相框: CGContextRef context = CGBitmapContextCreate(NULL self.bounds.size.width self.bounds.size.height 8 4 * self.bounds.size.width CGColorSpaceCreateDeviceRGB() kCGImageAlphaPremultipliedFirst);CGContextAddArc(context

圆形进度条定制

// // HYBCircleProgressBar.h // CircleBarProject // // Created by huangyibiao on 14-8-16. // Copyright (c) 2014年 Uni2Uni. All rights reserved. // #import <UIKit/UIKit.h> #import <QuartzCore/QuartzCore.h> /*! * @brief 圆形进度条 * @author huangyibia