制作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);
}
时间: 2024-10-14 00:09:36

制作HUD的相关文章

如何用Unity GUI制作HUD

若知其所以然,自然知其然. HUD是指平视显示器,就是套在脸上,和你的眼睛固定在一起,HUD的意思就是界面咯,一般我们说HUD特指把3D空间中的界面的某些信息(比如血条,伤害之类)的贴在界面上,对应3D空间投影到屏幕空间的位置. ? 很简单很简单的一件事,就是投影而已. 虽然我一直认为自己学的是野路子,相当的空中楼阁.不幸发现,比我路子更野,比我基础更差的同学实在是多到令人发指的程度. ? 没办法,我们用UGUI来实现一下这个投影过程. 首先准备一下我们的3D空间 弄几个盒子让他们转起来. 如果

虚幻4 - ARPG实战教程(第一季)

在广受欢迎的的<虚幻4高速开发入门>视频教程之后.我收到了许多的反馈,当中大量的同学想要一个实战类的教程.于是,我花了一段时间准备之后,推出了新的一系列实战教程. 希望以深入浅出的方式.解说虚幻4引擎各个模块的实际使用方法.开发思路,以及相关知识拓展. 因为这一系列教程很庞大.所以会分为上.中.下三部来公布,敬请期待. 使用"开发人员头条"的同学.能够关注一下我的主题:http://toutiao.io/subjects/96671 课程相关资源下载:https://cod

(NO.00003)iOS游戏简单的机器人投射游戏成形记(二十一)

回到Xcode中,在MainScene.h接口中添加碰撞协议: @interface MainScene : CCNode <CCPhysicsCollisionDelegate> //... @end 然后在MainScene.m初始化方法中打开碰撞代理: _physicWorld = (CCPhysicsNode*)[self getChildByName:@"physicWorld" recursively:YES]; NSAssert(_physicWorld, @

Unreal Engine 4 Radiant UI 入门教程(一)制作Radiant HUD

请注意:本篇教程的编号是从零开始的,如果没有看第零篇教程,请前往学习. 本教程介绍如何制作Radiant HUD,这是指将网页元素直接加入到HUD中,效果为: 对应的网页元素为: 第一步: 将之前下载的工程中的WebUI文件夹拷贝到我们自己的工程(LearnRUI)的同位置下: 复制到: 第二步: 创建一个蓝图(RadiantWebViewHud) 创建一个新的Gamemode,将这个HUD放进去: 在worldsettings中放置这个Gamemode: 第三步: 创建蓝图(RadiantWe

cocos2d-x之道~制作第一款文字游戏(二)

在 cocos2d-x之道~制作第一款文字游戏(一)中,使用cocos2d-x把主界面显示出来,分别有每个级别提供的初始短语TileView,和目标短语TargetView.初步接触了cocos2d-x的基本概念和基础用法.这篇博客将会基本实现游戏的逻辑,完成游戏的主体部分.采用以下步骤: 使TileView可拖动 捕获TileView停止移动的事件 分析TileView是否放在正确的位置上 创建与原来Layer区分的层,放置按钮.菜单和分数等等. 添加计时和分数 现在开始,继续cocos2d-

iOS之UI--指示器HUD的创建和设置

指示器的创建和设置 *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } a { color: #4183C4; } a.absent { color: #cc0000; } a.anchor { display: block; padding-left: 30px; margin-left: -30px; cursor: pointer; position

Unity3D游戏开发从零单排(四) - 制作一个iOS游戏

提要 此篇是一个国外教程的翻译,虽然有点老,但是适合新手入门.自己去写代码,debug,布置场景,可以收获到很多.游戏邦上已经有前面两部分的译文,这里翻译的是游戏的最后一个部分. 欢迎回来 在第一篇中,我们学会了怎么在Unity中搭建游戏的场景,并且设置模型的物理属性. 在第二篇中,我们学会了怎么在unity中使用脚本,并且创建了大部分的游戏逻辑,包括投球和得分! 在这最后一节中,我们将会为用户创建一个菜单系统,并且和GameController进行交互,我们开始吧. 在设备上测试 到目前为止,

UE4的编程C++创建一个FPSproject(两)角色网格、动画、HUD、子弹类

立即归还,本文将总结所有这些整理UE4有关角色的网络格.动画.子弹类HUD一个简单的实现. (五)角色加入网格 Character类为我们默认创建了一个SkeletaMeshComponent组件,所以我们只须要做的就是使用哪一个静态网格模型.接下来我们为我们的FPSCharacter类创建一个蓝图,这样我们能够简单的把资源指定给静态网格模型这里,而且方便以后操作加入的组件. 作为開始,我们首先要导入一个第三人称的静态网格模型.最后我们设置成两个网格,一个是我们自己看的,另外一个是其它人看到的.

Python制作的射击游戏

如果其他朋友也有不错的原创或译文,可以尝试推荐给伯乐在线.] 你有没有想过电脑游戏是怎样制作出来的?其实它没有你想象的那样复杂! 在这个教程里,你要学做一个叫<兔子和獾>的塔防游戏,兔子作为英雄,需要在城堡里抵御獾的进攻. 为了写这个游戏的代码,你将会用Python.好吧,我不是指一条大蟒蛇! Python是一种计算机语言.我们在这篇教程里选择Python是因为这门语言很容易上手,学习起来也很简单和有趣. 如果你是个Python方面的新手,在开始看教程之前你可以看看这本书< Think