|
 | | |
|
| |  |   |  |  | |  |  | |  |  | |  |  | |  | |
 | | |
| Como fazer a mesma coisa em XNA? |
|
|
O efeito é esse aqui:
http://www.miguelpragier.eti.br/dev/simples.swf
Em SDL, eu faço o pássaro com SpriteSheet e as janelas da casa eu faço à mão, mudando a cor da janela gradativamente ( efeito dimmer ) com SDL_FillRect(). E se fosse em XNA, como é que os camaradas deste FORUM fariam? ( O principal pra mim é o efeito dimmer das janelas! ) Miguel M.Pragier |
|
|
|  |  | | |
| Re: Como fazer a mesma coisa em XNA? |
|
|
Pode ser qualquer sugestão, gente. Afinal, Tudo o que sei sobre montagens 2D é o que a SDL permite.
A única coisa que não encontrei na Internet em minhas pesquisas no Google foi o efeito dimmer.
Como fazer?
- Com luz?
- Com sprites alternados?
- Com um effect?
- NDA?
Thanks M.Pragier |
|
|
|  |  | | |
| Re: Como fazer a mesma coisa em XNA? |
|
|
Bom, o q vc pode fazer é desenhar
os vertices da porta de da janela com uma cor e
no método update incrementar a cor para que
ocorra o efeito desejado.
Fiz um exmeplo baseado em um código
do site riemers.net para vc ver como fica.
Inclua esse arquivo no Content do seu jogo users.telenet.be/riemer/files/effects.fx
using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Net;
using Microsoft.Xna.Framework.Storage;
namespace LuzPiscando
{
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
GraphicsDevice device;
Effect effect;
VertexPositionColor[] vertices;
VertexDeclaration myVertexDeclaration;
Vector3 cor;
float incremento;
public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
}
protected override void Initialize()
{
graphics.PreferredBackBufferWidth = 500;
graphics.PreferredBackBufferHeight = 500;
graphics.IsFullScreen = false;
graphics.ApplyChanges();
Window.Title = "Luz piscando!";
cor = new Vector3(0, 0, 0);
incremento = 0.01f;
base.Initialize();
}
private void SetUpVertices()
{
vertices = new VertexPositionColor[3];
vertices[0].Position = new Vector3(-0.5f, -0.5f, 0f);
vertices[0].Color = new Color(cor);
vertices[1].Position = new Vector3(0, 0.5f, 0f);
vertices[1].Color = new Color(cor);
vertices[2].Position = new Vector3(0.5f, -0.5f, 0f);
vertices[2].Color = new Color(cor);
myVertexDeclaration = new VertexDeclaration(device, VertexPositionColor.VertexElements);
}
protected override void LoadContent()
{
device = graphics.GraphicsDevice;
spriteBatch = new SpriteBatch(GraphicsDevice);
effect = Content.Load<Effect>("effects");
SetUpVertices();
}
protected override void UnloadContent()
{
}
protected override void Update(GameTime gameTime)
{
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();
if (cor.Y <= 0f)
{
incremento = 0.01f;
}
if (cor.Y >= 1f)
{
incremento = -0.01f;
}
//Customize com a cor desejada
//cor.X = cor.X + incremento;
cor.Y = cor.Y + incremento;
cor.Z = cor.Z + incremento;
SetUpVertices();
base.Update(gameTime);
}
protected override void Draw(GameTime gameTime)
{
device.Clear(Color.DarkSlateBlue);
effect.CurrentTechnique = effect.Techniques["Pretransformed"];
effect.Begin();
foreach (EffectPass pass in effect.CurrentTechnique.Passes)
{
pass.Begin();
device.VertexDeclaration = myVertexDeclaration;
device.DrawUserPrimitives(PrimitiveType.TriangleList, vertices, 0, 1);
pass.End();
}
effect.End();
base.Draw(gameTime);
}
}
} as coisas acontecem de um jeito próprio a cada iteração, por mais identicas q pareçam!!! |
|
|
|  |  | | |
| Re: Como fazer a mesma coisa em XNA? |
|
|
Uma maneira mais prática de fazer isto é fazer com que as janelas da casa sejam imagens desenhadas por um SpriteBatch e utilizar "tintar" a sprite.
Veja um exemplo no MSDN http://msdn.microsoft.com/en-us/library/bb194914.aspx
Divirta-se! Engenheiro de Software - Microsoft |
|
|
|
|  |  | |  |  | |  |  | |  |
|
|
| | |
|
|
|  |
 |  |
|