Estoy usando C # / XNA y me han dicho varias veces que no mezcle el código de actualización con el código de dibujo, ¡y estoy seguro de que no lo soy! Pero, ¿podría alguien describir qué es exactamente el "código lógico"?
Como se ve aquí: http://blogs.msdn.com/b/shawnhar/archive/2007/07/25/understanding-gametime.aspx
[...] asegúrate de poner toda la lógica del juego dentro del método de actualización (¡no en Draw!) y todo funcionará a una velocidad constante y agradable.
Lo pregunto ya que la velocidad de mi juego fluctúa en relación con el FPS. Slow FPS equivale a objetos que se mueven lentamente y viceversa. Y sí, estoy incluyendo el position += speed * (float)gt.ElapsedGameTime.TotalSeconds;
código esperado .
Esta es probablemente una gran pregunta para los novatos, pero solo quiero ser absolutamente claro en la definición de esto.
gt.ElapsedGameTime.TotalSeconds
es el número de segundos transcurridos desde el inicio del programa (juego). Si está multiplicando su velocidad por eso, luego de 5 segundos de juego, su velocidad será 5 veces más rápida (excepto el caso especial donde la velocidad se establece en 0). No estoy seguro de qué más podría tener que haga que eso sea falso, pero estoy intrigado.
iii
que incremente manualmente cada actualización, porque no la quiero en segundos, quiero pasos o marcos. Sin embargo, puedo ver que tu camino es una forma válida de codificar cosas.
position = speed * ...TotalSeconds
. Note que=
no lo es+=
. Si fuera+=
tal como lo escribió, su posición saldría volando de la pantalla casi instantáneamente.