制作HUD
转自:http://www.cnblogs.com/NEOCSL/archive/2012/03/05/2380341.html
1. HUD不仅仅能提供基本的显示信息给玩家,例如玩家的生命值等。在IOS系统甚至都牵扯到游戏的基本操作。

class AntHUD extends UDKHUD; var float PlayerNameScale;
var Font MyFont;
function DrawHUD()
{
var vector2D TextSize;
super.DrawHUD(); Canvas.Font=MyFont;
Canvas.DrawColorStruct(WhiteColor); //同样可以使用Canvas.DrawColor(255,255,255,255);来显示
Canvas.TextSize(PlayerOwner.Pawn.Health,TextSize.X,TextSize.Y); //文本的区域大小
Canvas.SetPos(TextSize.X*PlayerNameScale/ratioX,TextSize.Y*PlayerNameScale/ratioY); //文本的位置
Canvas.DrawText(PlayerOwner.Pawn.Health,,PlayerNameScale/RatioX,PlayerNameScale/RatioY); //文本的字体大小
} defaultproperties
{
PlayerNameScale=0.25
MyFont="UI_Fonts.MultiFonts.MF_HudLarge"
}

以上可以输出文字。
2. Canvas.DrawRect(rectX,rectY); //能绘制矩形,参数分别为长度和宽度
绘制矩形列表,这可以用来表示血槽

function DrawBar(string title,float value,float MaxValue,int x,int y,int r,int g,int b)
{
local int PosX; //从哪里开始绘制
local int BarSizeX; //绘制的长度 PosX=x;
BarSize=200*FMin(value/MaxValue,1); //200只不过是个调节长度值 canvas.SetPos(PosX,Y);
canvas.DrawColor(255,255,255,80); //画一个白框
canvas.DrawRect(200-BarSizeX,12); //当红色槽子没有时生成底部 if(!PlayerOwner.IsDead()) //没死才渲染,死了就不渲染
{
canvas.SetPos(PosX,Y);
canvas.DrawColor(R,G,B,80); //Draw Blood rect
canvas.DrawRect(BarSizeX,12);
}
}

然后将DrawBar写到DrawHUD函数中即可。
3.绘制Texture方法
DrawTile函数是专门用来绘制贴图的方法,参数如下:

/**
* Draws a texture to an axis-aligned quad at CurX,CurY.
*
* @param Tex - The texture to render.
* @param XL - The width of the quad in pixels.
* @param YL - The height of the quad in pixels.
* @param U - The U coordinate of the quad's upper left corner, in normalized coordinates.
* @param V - The V coordinate of the quad's upper left corner, in normalized coordinates.
* @param UL - The range of U coordinates which is mapped to the quad.
* @param VL - The range of V coordinates which is mapped to the quad.
* @param LColor - Color to colorize this texture.
* @param bClipTile - Whether to clip the texture (FALSE by default).
*/

DrawTile(tex,XL,YL,U,V,UL,VL);
说明一下tex为要画的贴图,XL,YL分别为横纵方向的缩放(默认的大小写成和UL和VL一样),UV是从图像上左上角算起的坐标。如下图所示:

对于上图有以下方式渲染:
var Texture2D DefaultTexture;
CursorTexture=Texture2D'UI_HUD.HUD.UI_HUD_BaseA'
以下方法渲染图片
Canvas.DrawTile(CursorTexture, 50 , 50, 215, 100, 50,50);
如果要把图片渲染为两倍,则使用以下方法:
Canvas.DrawTile(CursorTexture, 50*2 , 50*2, 215, 100, 50,50);
当然这只不过是一个基本的参数说明,实际绘制将使用下面的方法。
4. 以下方法来实现屏幕上绘制一张Texture
function DrawIconStretch(CanvasIcon Icon,float x,float y,optional float ScaleX,optional float ScaleY)
{
Canvas.SetPos(X,Y); DrawTileStrecth(Icon.texture,Abs(Icon)*ScaleX,Abs(Icon)*ScaleY,Icon.x,Icon.y,Icon.Ul,Icon.Vl,,true,true);
} var Texture2D DefaultTexture;
var CanvasIcon CrossIcon; CrossIcon=(Texture2D="...",U=215,V=100,UL=50,VL=50) function DrawHUD()
{
DrawIconStretch(CrossIcon,300,300,1,1);
}
制作HUD的更多相关文章
- 如何用Unity GUI制作HUD
若知其所以然,自然知其然. HUD是指平视显示器,就是套在脸上,和你的眼睛固定在一起,HUD的意思就是界面咯,一般我们说HUD特指把3D空间中的界面的某些信息(比如血条,伤害之类)的贴在界面上,对应3 ...
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(二十一)
回到Xcode中,在MainScene.h接口中添加碰撞协议: @interface MainScene : CCNode <CCPhysicsCollisionDelegate> //. ...
- 虚幻4 - ARPG实战教程(第一季)
在广受欢迎的的<虚幻4高速开发入门>视频教程之后.我收到了许多的反馈,当中大量的同学想要一个实战类的教程.于是,我花了一段时间准备之后,推出了新的一系列实战教程. 希望以深入浅出的方式.解 ...
- Unreal Engine 4 Radiant UI 入门教程(一)制作Radiant HUD
请注意:本篇教程的编号是从零开始的,如果没有看第零篇教程,请前往学习. 本教程介绍如何制作Radiant HUD,这是指将网页元素直接加入到HUD中,效果为: 对应的网页元素为: 第一步: 将之前下载 ...
- iOS之UI--指示器HUD的创建和设置
指示器的创建和设置 渐变动画 描述: 使用label就能制作指示器,原理:就是让label以动画的形式慢慢显示和消失 最好是半透明的 指示器有时候也被称为:HUD,遮盖,蒙版 思路步骤: 1.先在st ...
- Daikon Forge GUI 制作图集和字体集
Daikon Forge GUI 制作UI面板 在上次的学习中制作了一个简单的面板,下面来学习制作图集以及字体. 1.DF-GUI 图集(Atlas)制作 操作步骤 选中UI Root根节点,在Sce ...
- UE4编程之C++创建一个FPS工程(二)角色网格、动画、HUD、子弹类
转自:http://blog.csdn.net/u011707076/article/details/44243103 紧接上回,本篇文章将和大家一同整理总结UE4关于角色网格.动画.子弹类和HUD的 ...
- UE4的编程C++创建一个FPSproject(两)角色网格、动画、HUD、子弹类
立即归还,本文将总结所有这些整理UE4有关角色的网络格.动画.子弹类HUD一个简单的实现. (五)角色加入网格 Character类为我们默认创建了一个SkeletaMeshComponent组件,所 ...
- Unity3D游戏开发从零单排(四) - 制作一个iOS游戏
提要 此篇是一个国外教程的翻译,尽管有点老,可是适合新手入门. 自己去写代码.debug,布置场景,能够收获到非常多.游戏邦上已经有前面两部分的译文,这里翻译的是游戏的最后一个部分. 欢迎回来 在第一 ...
随机推荐
- Go 语言从新手到大神:每个人都会踩的五十个坑(转)
Go语言是一个简单却蕴含深意的语言.但是,即便号称是最简单的C语言,都能总结出一本<C陷阱与缺陷>,更何况Go语言呢.Go语言中的许多坑其实并不是因为Go自身的问题.一些错误你再别的语言中 ...
- MySQL数据库的常见操作(七)
MySQL数据库的常见操作 1.创建数据库 2.创建重名的数据库以及如何查看警告信息 3.设置数据库的编码方式(默认为utf8) 4.修改和查看数据库的编码方式 5.删除数据库 6.6.删除已经删除了 ...
- 01 redis特点及安装使用
一:redis的特点 ()redis是一个开源,BSD许可高级的key-value存储系统.可以用来存储字符串,哈希结构,链表,集合,因此,常用来提供数据结构服务. 二:redis和memcached ...
- struts2 Eclipse 中集成strust2开发框架实例
下面通过建立一个小的实例具体来说明Eclipse 集成struts2,以下实例采用的为 struts2 版本为 struts2 2.2.3.1 为应用. 1. 下载struts2的开发包 第一步: 在 ...
- phthon 基础 7.3 logging 日志模块
一. logging 的使用 日志是我们排查问题的关键利器,写好日志记录,当我们发生问题时,可以快速定位代码范围进行修改.python有给我们开发者提供好的日志模块,下面我们就来介绍一下logging ...
- python 基础 5.4 类的私有属性和私有方法
一. 类的私有变量和私有方法 1> 在python 中可以通过在属性变量名前,加上双下划线定义属性为私有属性 2>特殊变量命名 a. _xx 以单下划线开头的表示的是protect ...
- 继续封装DBDA.php 加入ajax
<?php class DBDA { public $host = "localhost"; //服务器地址 public $uid = "root"; ...
- EasyPlayerPro Windows播放器实时流进行本地缓冲区即时回放功能实现
背景描述 参照国内视频监控行业监控软件,实现当前视频的即时回放功能,例如: 监控人员发现刚刚的某个视频点有可疑,就像录像回放一样,想倒回去看一下,但又不想切换到录像回放界面, 此处就体现即时回放的价值 ...
- EasyNVR H5无插件摄像机直播解决方案前端解析之:监控实时直播的四分屏的前端展示
完成运行效果图: 一.四分屏展示样式布局 1.通过html.css等来进行样式排版 根据需求的四分屏的样式:来合理的划分出四个大块,分别用于放置四个播放器: 以四等分结构为例进行前端的排版: html ...
- Python 进程、线程、协程、锁机制,你知多少?
1.python的多线程到底有没有用? 2. 为什么在python里推荐使用多进程而不是多线程 3.进程.线程.协程.各种锁 4.Python多进程编程