利用Render Texture实现游戏的小雷达效果(摄影机分屏)
最近游戏蛮牛在举办一个活动,就是要做出这样的效果:
![]()
题目:实现游戏分屏效果
要求:
1、 分屏,且分割线不规则(即非水平或垂直);
2、 各屏可单独操作(移动、缩放),操作指该屏整体操作;
3、 左(或上)立方体顺时针自转;右(或下)立方体逆时针自转;
一开始以为又要动用我最不熟悉的Shader了,有点怕,后来仔细一想,这不就是跟雷达效果一样的么?
然后立马动手,做一个效果玩玩。
![]()
原理很简单,就是弄两个摄影机,一个作为Player的子物体,并放在Player背后,跟随着Player,
当第三人称摄影机,这是一个主摄影机,不用设置什么。第二个摄影机也同样作为Player的自物体,
并放在Player的头顶,作为俯视摄影机,这样该摄影机看到的就是类似雷达效果了。

不过我并不打算直接将俯视摄影机的内容画到屏幕上,毕竟摄影机只能是方形的,如果直接放屏幕上,
并不能实现我们要的各种形状的效果,所有我先将摄影机的内容投射到一张“Render Texture”身上,
在Project视图下右键新建一张“Render Texture”即可

然后再通过UGUI将此Render Textur裁剪成我要的形状,然后再当成GUI投射到屏幕上。
具体做法如下:
先设置Mask遮罩,具体要什么形状你自己PS画一个

然后再给该Mask添加一个RawImage自物体,并将Render Texture显示到该子物体身上即可,

现在一切已经完毕了,再给Player添加一段控制代码,就可以做出一个简易的第三人称小游戏了。
using UnityEngine;
using System.Collections; public class PlayerController : MonoBehaviour { public float WalkSpeed = 2.0f;
public float RotateSpeed = 3.0f; private CharacterController controller; // Use this for initialization
void Start () {
controller = GetComponent<CharacterController>();
if(controller == null)
{
Debug.LogError("CharacterController cound not be found");
}
} // Update is called once per frame
void Update () {
var x = Input.GetAxis("Horizontal");
var z = Input.GetAxis("Vertical"); controller.SimpleMove(transform.forward * z * WalkSpeed * Time.time);
transform.Rotate(, x * RotateSpeed, );
}
}
总结一下:
其实不规则形状的摄影机分屏原理就是先将摄影机的内容画到一张图片上,
然后再通过UGUI的遮罩效果裁剪出一定形状,再讲该图片放到裁剪后的图片上,
显示出来的就是裁剪过的摄影机内容了。
最后附上源码:
利用Render Texture实现游戏的小雷达效果(摄影机分屏)的更多相关文章
- camera render texture 游戏里的监控视角
Camera里: 新建render texture并拖入到target texture里 新建材质球 拖入render texture camera里的视角会在材质球上出现 新建一个pla ...
- 【unity3d游戏开发之基础篇】unity3d射线的原理用法以及一个利用射线实现简单拾取的小例子
原地址:http://www.cnblogs.com/xuling/archive/2013/03/04/2943154.html 最近开始研究U3D,它的强大就不多说了, 今天研究了研究射线相关东西 ...
- Java中利用随机数的猜拳游戏
Java中利用随机数的猜拳游戏,实现非常简单,重难点在于随机数的产生. 首先GameJude类是用于判断输赢的一个类: package testGame; public class GameJudge ...
- 小易邀请你玩一个数字游戏,小易给你一系列的整数。你们俩使用这些整数玩游戏。每次小易会任意说一个数字出来,然后你需要从这一系列数字中选取一部分出来让它们的和等于小易所说的数字。 例如: 如果{2,1,2,7}是你有的一系列数,小易说的数字是11.你可以得到方案2+2+7 = 11.如果顽皮的小易想坑你,他说的数字是6,那么你没有办法拼凑出和为6 现在小易给你n个数,让你找出无法从n个数中选取部分求和
小易邀请你玩一个数字游戏,小易给你一系列的整数.你们俩使用这些整数玩游戏.每次小易会任意说一个数字出来,然后你需要从这一系列数字中选取一部分出来让它们的和等于小易所说的数字. 例如: 如果{2,1,2 ...
- 利用WordPress REST API 开发微信小程序从入门到放弃
自从我发布并开源WordPress版微信小程序以来,很多WordPress网站的站长问有关程序开发的问题,其实在文章:<用微信小程序连接WordPress网站>讲述过一些基本的要点,不过仍 ...
- Render Texture
[Render Texture] Render Textures are special types of Textures that are created and updated at runti ...
- Render Texture coordinates
https://docs.unity3d.com/550/Documentation/Manual/SL-PlatformDifferences.html Render Texture coordin ...
- 编写Java程序,利用List实现报数游戏的实现思路
返回本章节 返回作业目录 需求说明: 利用List实现报数游戏 在控制台输入一个大于3的正整数,该整数表示有多少人,如在控制台输入10,表示有10个人,10个人围成一个圆圈,从序号1开始为这些人依次编 ...
- 利用canvas阴影功能与双线技巧绘制轨道交通大屏项目效果
利用canvas阴影功能与双线技巧绘制轨道交通大屏项目效果 前言 近日公司接到一个轨道系统的需求,需要将地铁线路及列车实时位置展示在大屏上.既然是大屏项目,那视觉效果当然是第一重点,咱们可以先来看看项 ...
随机推荐
- JavaScript函数的概念
函数是这样的一段代码,它只定义一次,但可能被执行或调用任意多次. JavaScript函数是参数化的:函数的定义会包含形参,这些参数在函数的整体中像局部变量一样工作.函数调用时会为形参提供实参的值.除 ...
- MVC MemeberShip vs. Asp.net Identity
参考 从Membership 到 .NET4.5 之 ASP.NET Identity Extending Identity Accounts and Implementing Role-Based ...
- 《Invert》开发日志00:缘起
按照所有程序员的惯例,编号从0开始.本系列日志将记录一款独立游戏 发起->构思->设计->实现->完善->测试(如果需要)->上线->后期维护(如果有人玩) ...
- BZOJ 2038: [2009国家集训队]小Z的袜子(hose) [莫队算法]【学习笔记】
2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 7687 Solved: 3516[Subm ...
- java读取excel文件
package com.execl; import java.io.File; import java.io.FileInputStream; import java.io.IOException; ...
- Java中单例
Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍两种:懒汉式单例.饿汉式单例 单例模式有以下特点: 1.单例类只能有一个实例. 2.单例类必须自己创建自己的唯一实例. 3. ...
- 配置oracle instance client
1,下载oracle instance client.http://www.oracle.com/technetwork/database/features/instant-client/index- ...
- RFID考试背诵
简答题: 简述RFID标准多元化的原因: 由不同的技术因素.利益因素导致: 工作频率分布在低频至微波的多个频段中,频率不同,技术差异大. 作用距离的差异导致标准不同:因为应答器分为有源.无源两种工作方 ...
- Spring知识点提炼
原文出处: 朱小厮 1. Spring框架的作用 轻量:Spring是轻量级的,基本的版本大小为2MB 控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对 ...
- windows下的NodeJS安装
1.登录官网 http://nodejs.org ,install 下载安装包.. 2.安装过程基本直接“NEXT”就可以了. 3.安装完成后可以使用cmd(win+r然后输入cmd进入)测试下是否安 ...