 | | |
| Re: Girar um modelo em seu proprio eixo |
|
|
Se for em 2D é facil, 3D já não sei
Declare
Vector2 origem, posImg;
//origem humm.., imagine que a imagem fosse uma foto, a origem seria como um alfinete que a prende
//posImg posição x e y da imagem
float rotação; //rotacão atual da imagem
Texture2D imagem; //imagem que vai girar
protected override void LoadContent()
{
spriteBatch = new SpriteBatch(GraphicsDevice);
imagem = Content.Load<Texture2D>(@"Helice");
posImg = new Vector2(300,200);
//defina a origem no centro para que rode como um volante
origem.X = imagem.Width / 2;
origem.Y = imagem.Height / 2;
}
protected override void Draw(GameTime gameTime)
{
rotação += 0.05f;
graphics.GraphicsDevice.Clear(Color.CornflowerBlue);
spriteBatch.Begin();
spriteBatch.Draw(imagem, posImg, null, Color.White, rotação, origem, 1.0f, SpriteEffects.None, 0f);
spriteBatch.End();
base.Draw(gameTime);
} |
|
|
|  |  | | |
| Re: Girar um modelo em seu proprio eixo |
|
|
jkleber escreveu
Então, para ser sincero eu só coloquei multiplicando no matrix.CreateLookAt porque foi o unico que chegou no resultado mais satisfatório, mas você poderia me dizer qual o local correto onde eu deveria colocar??, só consigo fazer aquela rotação que eu te falei, eu roda como se estivesse em orbita de alguma coisa, não gira em seu próprio eixo.
Quanto a colocar a posição do modelo, eu coloquei porque fica mais facil pra eu me organizar o que estou fazendo.
e obrigado pela dica do createrotation
|
essa matrix gameWorldRotation, tu pode colocar atribuir ela à matrix World do Effect, assim: effect.World = gameWorldRotation;
Tipo, tem como tu procurar algum video ou jogo e mostrar pra gente aqui como vc quer de fato essa sua rotação? Dai seria bem mais fácil da gente, pelo menos pra mim, te mostrar algum código que de fato rode esse tipo de rotação que tu quer...
De qualquer forma, baixa este exemplozinho(Download GoingBeyond1_Tutorial_Sample.zip). Dá uma olhada no código e vê se a navezinha tá girando como tu quer...
O exemplo sugerido acima, pode ser encontrado aqui. MCP, MCTS. Administrador do SharpGames. Game Developer(C++) at Manifesto Game Studio
Meu Blog: lucianojosefj.spaces.live.com |
|
|
|  |  | | |
| Re: Girar um modelo em seu proprio eixo |
|
|
Talvez eu ja esteja sendo chato, mas é que ta dificil, nada da certo...
O exemplo da nave é exatamente o que eu quero, eu fiz exatamente como esta e ainda não deu:
effect.EnableDefaultLighting();
// posiciona o modelo no "mundo"
effect.World = transforma[mesh.ParentBone.Index] * Matrix.CreateRotationY(rotacao) * Matrix.CreateTranslation(posicaoMundo);
// posiciona o modelo em relação a camera
effect.View = Matrix.CreateLookAt(posicaoCamera, Vector3.Zero, Vector3.Up);
// cria a perspectiva do modelo
effect.Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(escala),
aspectRatio, 1.0f, 10000.0f);
No Matrix.CreateRotation eu ja usei X , Y e Z, eu coloquei Vector3.zero, fiz tudo praticamente e o modelo não roda em seu eixo,... ele fica fazendo circulos, não sei o que possa estar acontecendo, é muito estranho
|
|
|
|
|  |