Tải bản đầy đủ (.pdf) (22 trang)

XNA Game Studio Express Aula 4 pptx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.37 MB, 22 trang )

XNA Game Studio Express
XNA Game Studio Express
Aula 4
Aula 4
Uso de
Uso de
Fontes
Fontes
no XNA
no XNA
Alexandre Santos Lobão
Alexandre Santos Lobão


P
P
ó
ó
s
s
em
em
Desenvolvimento
Desenvolvimento
de
de
Jogos
Jogos
Eletrônicos
Eletrônicos
-


-
IESB
IESB
2
Agenda: Aula 4
Agenda: Aula 4
Revisão
Revisão
-
-
Desenho
Desenho
de
de
objetos
objetos
2D
2D
Revisão
Revisão
-
-
Input
Input
Revisão
Revisão
-
-
Audio com XACT
Audio com XACT

Uso de
Uso de
Fontes
Fontes
no XNA
no XNA
Escrevendo
Escrevendo
com
com
SpriteFont
SpriteFont
Criando
Criando
uma
uma
fonte
fonte
customizada
customizada
3
Revisão
Revisão
: XNA Framework
: XNA Framework
Plataforma
Plataforma
Core
Core
Framework

Framework
Extended
Extended
Framework
Framework
Games
Games
XACT
XACT
XINPUT
XINPUT
XContent
XContent
Direct3D
Direct3D
Graphics
Graphics
Audio
Audio
Input
Input
Math
Math
Storage
Storage
Application Model
Application Model
Content Pipeline
Content Pipeline
Starter Kits

Starter Kits
C
C
ó
ó
digo
digo
Conte
Conte
ú
ú
do
do
Componentes
Componentes
Legenda
XNA Provides
XNA Provides
N
N
ó
ó
s
s
criamos
criamos Comunidade
Comunidade
4
Arquitetura
Arquitetura

de um
de um
programa
programa
XNA
XNA
Ao
Ao
se
se
criar
criar
um
um
projeto
projeto
,
,
são
são
gerados
gerados
dois
dois
arquivos
arquivos
:
:
Program.cs – Game1.run
Game1.cs – com os métodos:

Initialize()
LoadGraphicsContent()
UnloadGraphicsContent()
Chamados a cada game loop
Update(GameTime gameTime)
Draw(GameTime gameTime)
5
Desenho
Desenho
de
de
objetos
objetos
2D
2D
Na classe game 1:
private Texture2D textura;
private SpriteBatch Renderizador2D;
No Método LoadGraphicsContent:
textura = content.Load<Texture2D>("xna_thumbnail");
Renderizador2D = new S
priteBatch(graphics.GraphicsDevice);
No Método UnloadGraphicsContent:
textura.Dispose();
Renderizador2D.Dispose();
No Método Draw:
Renderizador2D.Begin(SpriteBlendMode.AlphaBlend);
Renderizador2D.Draw(textura, Vector2.One, Color.White);
Renderizador2D.End();
6

Tratamento
Tratamento
de input do
de input do
usu
usu
á
á
rio
rio
1. Uso do GamePad
GamePadState gamePad = GamePad.GetState(PlayerIndex.One);
novaPosicao.Y -= gamePad.ThumbSticks.Left.Y;
2. Uso do Teclado
KeyboardState keyboardState = Keyboard.GetState();
if (keyboardState.IsKeyDown(Keys.Up))
novaPosicao.Y -= 1;
3. Uso do Mouse
MouseState mouse = Mouse.GetState();
novaPosicao.X = mouse.X;
7
Uso de Audio com XACT
Uso de Audio com XACT
Para incluir um som no jogo:
1. Gerar o arquivo de som XACT
2. Incluir o arquivo no jogo
3. Utilizar o som via Content Pipeline
8
Uso de Audio com XACT
Uso de Audio com XACT

1. Gerar o arquivo de som XACT
Arrastar sons do “Wave Bank” para o “Sound bank”
Setar propriedades do som a ser tocado (ex: “loop event” do
evento “Play Wave”
9
Uso de Audio com XACT
Uso de Audio com XACT
2. Incluir o arquivo no jogo
Da mesma forma como se incluem texturas
10
Uso de Audio com XACT
Uso de Audio com XACT
3. Utilizar o som via Content Pipeline
Criação dos objetos
// Audio objects
AudioEngine audioEngine;
WaveBank waveBank;
SoundBank soundBank;
protected override void Initialize()
{
audioEngine = new AudioEngine("MySounds.xgs");
// Assume the default names for the wave and sound bank.
// To change these names, change properties in XACT.
waveBank = new WaveBank(audioEngine, "Wave Bank.xwb");
soundBank = new SoundBank(audioEngine, "Sound Bank.xsb");
base.Initialize();
}
11
Uso de Audio com XACT
Uso de Audio com XACT

3. Utilizar o som via Content Pipeline
Gerar um efeito sonoro (som sem loop)
soundBank.PlayCue("chord");
Tocar música de fundo (som com loop)
// Iniciar a música
myLoopingSound = soundBank.GetCue("notify");
myLoopingSound.Play();
// Parar ou continuar a música
if (myLoopingSound.IsPaused)
myLoopingSound.Resume();
else
myLoopingSound.Pause();
12
Uso de
Uso de
Fontes
Fontes
no XNA
no XNA
Para incluir um fontes no jogo:
1. Incluir novo item do tipo “SpriteFont”
2. Configurar parâmetros da fonte
3. Utilizar a fonte
13
1. Incluir novo item do tipo “SpriteFont”
14
2. Configurar parâmetros da fonte
<?xml version="1.0" encoding="utf-8"?>
<XnaContent xmlns:Graphics="Microsoft.Xna.Framework.Content.Pipeline.Graphics">
<Asset Type="Graphics:FontDescription">

<! the font name to be imported >
<FontName>Arial</FontName>
<! The size of the font. >
<Size>14</Size>
<! The amount of spacing in between characters. >
<Spacing>2</Spacing>
<! Style of the font. Valid entries (case sensitive) : "Regular", "Bold", "Italic", and "Bold, Italic".
>
<Style>Regular</Style>
<!– Character set: 32, (ASCII space), to 126, ('~'), covers the basic Latin character set. >
<CharacterRegions>
<CharacterRegion>
<Start>&#32;</Start>
<End>&#126;</End>
</CharacterRegion>
</CharacterRegions>
</Asset>
</XnaContent>
15
3. Utilizar a fonte
Na classe Game1.cs
// Define a variável da fonte
SpriteFont fonteArial;
No método Initialize()
// Inicializa a fonte, usando o nome do Asset no content Pipeline
fonteArial = content.Load<SpriteFont>("FonteArial");
No método Draw()
mySpriteBatch.Begin();
mySpriteBatch.DrawString(fonteArial, “Hello World!", Vector2.One, Color.Yellow);
mySpriteBatch.End();

16
Fontes
Fontes
Customizadas
Customizadas
no XNA
no XNA
Para criar uma fonte customizada:
1. Criar textura com caracteres desejados
2. Inserir no projeto classe de apoio “Font.cs”
3. Utilizar a fonte
17
1. Criar textura com caracteres desejados
Por exemplo, para escrever “Teste de Colisão”,
com sombras,
criar a textura:
TestdColiã
TestdColiã
18
1. Criar textura com caracteres desejados
Dica: Não se limite a letras e números para
criar HUDs (Heads Up Displays)!
Combustível =
Velocidade =
Vidas ou botão ativo (01) =
Energia =
Tipos de armas =
9876543210
9876543210
0123456789

0123456789
9876543210
9876543210
0123456789
0123456789
01
01
19
2. Classe de apoio “Font.cs”
private Texture2D TextureFont; private string Characters;
private int CharacterSpacing; private int CharacterWidth; private int CharacterHeight;
public void Draw(SpriteBatch batch, int x, int y, string digits)
{
float xPosition = x;
for (int i = 0; i < digits.Length; i++)
{
if (digits[i] != ‘ ') //Não desenha se for espaço em branco
{
int character = Characters.IndexOf(digits[i]); //Busca a posição da letra na textura
//Desenha a letra na posição corrente
batch.Draw( TextureFont, new Vector2(xPosition, (float)y),
new Rectangle(character * CharacterSpacing, 0, CharacterWidth, CharacterHeight),
Color.White);
}
//Move a posição corrente para a próxima letra
Position += (digits[i] == ',' || digits[i] == ':' || digits[i] == '.') ? CharacterWidth / 2 : CharacterWidth;
}
}
20
3. Utilizar a fonte

Na classe Game1.cs
// Define a variável da fonte
Font CustomFont;
No método Initialize()
// Inicializa a fonte, informando a textura, os caracteres utilizados, espaçamento, largura e
altura dos caracteres
CustomFont = new Font(content.Load<Texture2D>(@"MyFont"), "
TestdColiã", 20, 20, 35);
No método Draw()
mySpriteBatch.Begin();
CustomFont.Draw(mySpriteBatch, 80, 0, "Teste de Colisão");
mySpriteBatch.End();
21
Desafio: HUD textual
HUD = Informação de vida, energia, etc de um
jogo
Pegar exemplo da aula 3
Incluir contador de “Vidas”
Decrementar a cada colisão
Fechar a janela se = zero
22
Perguntas?
Perguntas?

×