制作HUD
转自:http://www.cnblogs.com/NEOCSL/archive/2012/03/05/2380341.html
1. HUD不仅仅能提供基本的显示信息给玩家,例如玩家的生命值等。在IOS系统甚至都牵扯到游戏的基本操作。
![](https://common.cnblogs.com/images/copycode.gif)
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"
}
![](https://common.cnblogs.com/images/copycode.gif)
以上可以输出文字。
2. Canvas.DrawRect(rectX,rectY); //能绘制矩形,参数分别为长度和宽度
绘制矩形列表,这可以用来表示血槽
![](https://common.cnblogs.com/images/copycode.gif)
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);
}
}
![](https://common.cnblogs.com/images/copycode.gif)
然后将DrawBar写到DrawHUD函数中即可。
3.绘制Texture方法
DrawTile函数是专门用来绘制贴图的方法,参数如下:
![](https://common.cnblogs.com/images/copycode.gif)
/**
* 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).
*/
![](https://common.cnblogs.com/images/copycode.gif)
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,布置场景,能够收获到非常多.游戏邦上已经有前面两部分的译文,这里翻译的是游戏的最后一个部分. 欢迎回来 在第一 ...
随机推荐
- windows下的常用命令
net start ... 启动某个服务 net stop ... 停止某个服务 net start 查看所有启动的服务 services.msc 打开服务的界面 ipconfig ...
- 九度OJ 1029:魔咒词典 (排序)
时间限制:5 秒 内存限制:32 兆 特殊判题:否 提交:4574 解决:1318 题目描述: 哈利波特在魔法学校的必修课之一就是学习魔咒.据说魔法世界有100000种不同的魔咒,哈利很难全部 ...
- 用 Apache POI 读取 XLSX 数据
最近因为项目的原因,需要从一些 Microsoft Office Excel 文件读取数据并加载到数据库. Google了一下方法,发现其实可以用的 Java 第三方库很多,最著名的是 Apache ...
- lambda map filter 用法
lambda 可以这样认为,lambda作为一个表达式 非常容易理解,在这里lambda简化了函数定义的书写形式.是代码更为简洁,但是使用函数的定义方式更为直观,易理解. #定义函数:普通方式 def ...
- python仪表盘
1.在这里可以看到pyecharts中有定义好的各种图标类. 复制上面代码,会出现“ModuleNotFoundError: No module named 'pyecharts'”. pip ins ...
- Java for LeetCode 131 Palindrome Partitioning
Given a string s, partition s such that every substring of the partition is a palindrome. Return all ...
- linux 下ftp的安装配置 图文教程
0.安装ftp的前置条件是关掉SElinux # vi /etc/selinux/config 修改 SELINUX=” disabled ” ,重启服务器.若相同,则跳过此步骤. 1. 可先查看是否 ...
- YxdJSON - Delphi 高性能 JSON 库(支持RTTI和序列化操作)
源:YxdJSON - Delphi 高性能 JSON 库(支持RTTI和序列化操作) Delphi 高性能 JSON 库(支持RTTI和序列化操作) 支持平台: Windows, Android, ...
- 1.2 Data Abstraction(算法 Algorithms 第4版)
1.2.1 package com.qiusongde; import edu.princeton.cs.algs4.Point2D; import edu.princeton.cs.algs4.St ...
- c语言学习的第12天
#include <stdio.h> int main(void) { int *p; int i=5; char ch='A'; p=&i; *p=99; printf(&quo ...