制作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,布置场景,能够收获到非常多.游戏邦上已经有前面两部分的译文,这里翻译的是游戏的最后一个部分. 欢迎回来 在第一 ...
随机推荐
- Codeforces 467D Fedor and Essay bfs
题目链接: 题意: 给定n个单词. 以下有m个替换方式.左边的单词能变成右边的单词. 替换随意次后使得最后字母r个数最少,在r最少的情况下单词总长度最短 输出字母r的个数和单词长度. 思路: 我们觉得 ...
- ubuntu14.04设置sublime text3为默认文本编辑器
更新时间2017年07月20日17:35:04 原来的方法貌似并不试用,现在才发现,其实ubuntu下也和Windows下一样... 右键,属性,然后如图所示 set as default 即可. 之 ...
- JQuery 获取URL中传递的参数
该方法基于JQuery,然后给方法传递URL中的参数名,返回参数值 (function($){ $.getUrlParam = function(name){ var reg = ...
- Awesome Vue.js vue.js学习资源链接大全 中文
https://blog.csdn.net/caijunfen/article/details/78216868
- QTP自动化测试框架简述
1.使用框架的原因? 框架是一组自动化测试的规范.测试脚本的基础代码,以及测试思想.惯例的集合,从而减少冗余的代码.提高代码生产率,重用性和可维护性. 2.自动化测试框架的架构 脚本层(业务组件开发) ...
- Java for LeetCode 105 Construct Binary Tree from Preorder and Inorder Traversal
Given preorder and inorder traversal of a tree, construct the binary tree. Note: You may assume that ...
- OC中RAC编程block的基本使用
在OC中block的基本使用 // // ViewController.h // RAC--test // // Created by Aaron on 17/1/17. // Copyright © ...
- jzyz集训 0612
今天闵神找的题,题目质量还算不错,就是有些偏套路了. 第一题:定义一个排列是合法当且仅当这个排列中不存在大于2的循环节,询问有多少长度为n的排列是合法的且B排列是该排列的子序列. 恩...这题目其实不 ...
- Matlab的publish功能和cell功能
Matlab的publish功能能够让写的代码变成优美的文档.类似为知笔记的markdown语言. cell功能配合publish使用,可以形成不同的功能块.而且调试的时候,可以按section调试. ...
- Word怎么在方框里打勾
插入--->符号--->其他符号--->在“子集”中选择“数学运算符”.第三行就可以找到“勾”符号,选中后点击“插入”即可. 或插入-->符号-->其他符号-->在 ...