Estou usando C # / XNA e me disseram várias vezes para não misturar código de atualização com código de desenho - e tenho certeza de que não! Mas alguém poderia descrever o que exatamente é 'código lógico'?
Como visto aqui: http://blogs.msdn.com/b/shawnhar/archive/2007/07/25/understanding-gametime.aspx
[...] certifique-se de colocar toda a sua lógica de jogo dentro do método Update (não no Draw!) e tudo funcionará a uma velocidade constante.
Estou perguntando isso, pois a velocidade do meu jogo está flutuando em relação ao FPS. FPS lento é igual a objetos em movimento lento e vice-versa. E sim, estou incluindo o position += speed * (float)gt.ElapsedGameTime.TotalSeconds;
código esperado .
Esta é provavelmente uma grande pergunta de novato, mas eu só quero ser absolutamente claro sobre a definição disso.
gt.ElapsedGameTime.TotalSeconds
era o número de segundos decorridos desde o início do programa (jogo). Se você estiver multiplicando sua velocidade por isso, após 5 segundos de jogo, sua velocidade será 5 vezes mais rápida (exceto no caso especial em que a velocidade está definida como 0). Não tenho certeza do que mais você poderia ter que tornaria isso falso, mas estou intrigado.
iii
que incremento manualmente cada atualização, porque não a quero em segundos, quero etapas ou quadros. Eu posso ver que o seu caminho é uma maneira válida de codificação suave.
position = speed * ...TotalSeconds
. Observe que=
não é+=
. Se fosse+=
exatamente como você digitou, sua posição sairia da tela quase instantaneamente.