elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [SFML] Alguien me ayuda con los movimientos del personaje??
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [SFML] Alguien me ayuda con los movimientos del personaje??  (Leído 5,424 veces)
LuKyTa14

Desconectado Desconectado

Mensajes: 6


Ver Perfil
[SFML] Alguien me ayuda con los movimientos del personaje??
« en: 25 Mayo 2022, 10:33 am »

Hola mi duda es la siguiente este es un fragmento de mi código

Código
  1. void jugador::movimientos_jugador()
  2. {
  3. if(Keyboard::isKeyPressed(Keyboard::W)){
  4. spr_jugador.move(0, -0.5);
  5. y = 3;
  6. if(x<3)++x;
  7. else x = 0;
  8. }
  9. if(Keyboard::isKeyPressed(Keyboard::S)){
  10. spr_jugador.move(0, 0.5);
  11. y = 0;
  12. if(x<3)++x;
  13. else x = 0;
  14. }
  15. if(Keyboard::isKeyPressed(Keyboard::A)){
  16. spr_jugador.move(-1, 0);
  17. y = 1;
  18. if(x<3)++x;
  19. else x = 0;
  20. }
  21. if(Keyboard::isKeyPressed(Keyboard::D)){
  22. spr_jugador.move(1, 0);
  23. y = 2;
  24. if(x<3)++x;
  25. else x = 0;
  26. }
  27. }

Los valores de x e y son para ir movimiento el sprite luego... Mi duda es como puedo hacer que los sean mas realistas y no tan vectoriales con el move, que cálculos debería realizar...

Otra cosa que me gustaría y es que mi personaje tenga la habilidad de saltar este movimiento como se realiza, ya que, también va a poseer gravedad...

Acepto todo tipo de recomendaciones, tampoco tengo problema en reunirme y enseñar el código completo!


En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: [SFML] Alguien me ayuda con los movimientos del personaje??
« Respuesta #1 en: 25 Mayo 2022, 15:53 pm »

Si vas a tener gravedad quiere decir que para saltar le tienes que imprimir una fuerza vertical negativa a la hora del salto, el algoritmo de la gravedad se encargará de bajarle la velocidad y después de hacerlo descender.


En línea

BloodSharp


Desconectado Desconectado

Mensajes: 814


¡ Hiperfoco !


Ver Perfil WWW
Re: [SFML] Alguien me ayuda con los movimientos del personaje??
« Respuesta #2 en: 25 Mayo 2022, 17:07 pm »

Los valores de x e y son para ir movimiento el sprite luego... Mi duda es como puedo hacer que los sean mas realistas y no tan vectoriales con el move, que cálculos debería realizar...

Transiciones, no recuerdo el nombre específico para easing in / easing out en castellano pero podrías probar el código de ease out quint para el comienzo del salto hasta el punto más alto y quizás ease in bounce para la caida.

Ver más algoritmos en easing.net

Otra cosa que me gustaría y es que mi personaje tenga la habilidad de saltar este movimiento como se realiza, ya que, también va a poseer gravedad...

Te recomiendo una mirada a esta lista de youtube que utiliza SFML para realizar un juego estilo plataformer, en el juego 4 parte 7 comienza con gravedad.



Teoría de salto en animaciones:



B#
« Última modificación: 25 Mayo 2022, 17:11 pm por BloodSharp » En línea



LuKyTa14

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: [SFML] Alguien me ayuda con los movimientos del personaje??
« Respuesta #3 en: 29 Mayo 2022, 03:27 am »

Transiciones, no recuerdo el nombre específico para easing in / easing out en castellano pero podrías probar el código de ease out quint para el comienzo del salto hasta el punto más alto y quizás ease in bounce para la caida.

Ver más algoritmos en easing.net

Te recomiendo una mirada a esta lista de youtube que utiliza SFML para realizar un juego estilo plataformer, en el juego 4 parte 7 comienza con gravedad.




Dale gracias ahora me pongo a ver algunos videos y cualquier cosa te consulto!! Muchas Gracias
En línea

Tachikomaia


Desconectado Desconectado

Mensajes: 1.460


Hackentifiko!


Ver Perfil
Re: [SFML] Alguien me ayuda con los movimientos del personaje??
« Respuesta #4 en: 29 Mayo 2022, 04:24 am »

Este código lo hice en 2019, así que mucho no lo entiendo ya, pero sirve para que el personaje se mueva, agache, salte y ataque.
Código
  1. fscommand ("fullscreen", "true");
  2. Player.Facing = 1;
  3. Player.Attacking = 0;
  4. Player.Action = 1;
  5. // 0 crouching, 0.5 startingjump, 1 nothing, 2 walking, 3 falling, 3.5 minjump, 4 jumping.
  6. // /////////////////////////////////////////////
  7. // //////////////////  Bond  ///////////////////
  8. // /////////////////////////////////////////////
  9. function PersControl () {
  10. if (Player.Action == 2) {
  11. // Si el personaje está caminando.
  12. if (Key.isDown(65)) {
  13. // Si se presiona A.
  14. StartingJump();
  15. } else if (Key.isDown(83)) {
  16. // Si se presiona S.
  17. Attack();
  18. } else if (Key.isDown(40)) {
  19. // Si se presiona abajo.
  20. Crouch();
  21. } else if (Key.isDown(39)) {
  22. // Si se presiona derecha.
  23. FaceRight();
  24. Player._x = Player._x+0.9;
  25. } else if (Key.isDown(37)) {
  26. // Si se presiona izquierda.
  27. FaceLeft();
  28. Player._x = Player._x-0.9;
  29. } else {
  30. Quiet();
  31. }
  32. //FALTA THROW
  33. } else if (Player.Attacking == 0) {
  34. // Si el personaje no está atacando.
  35. if (Player.Action == 1) {
  36. // Si el personaje está en reposo.
  37. if (Key.isDown(65)) {
  38. // Si se presiona A.
  39. StartingJump();
  40. } else if (Key.isDown(83)) {
  41. // Si se presiona S.
  42. Attack();
  43. } else if (Key.isDown(40)) {
  44. // Si se presiona abajo.
  45. Crouch();
  46. } else if (Key.isDown(39)) {
  47. // Si se presiona derecha.
  48. FaceRight();
  49. Player._x = Player._x+0.9;
  50. Walk();
  51. } else if (Key.isDown(37)) {
  52. // Si se presiona izquierda.
  53. FaceLeft();
  54. Player._x = Player._x-0.9;
  55. Walk();
  56. }
  57. //FALTA THROW
  58. } else if (Player.Action == 3) {
  59. // Si el personaje está cayendo.
  60. Player.SpeedY = Player.SpeedY+0.1;
  61. MovingJump();
  62. if (Player._y>=554) {
  63. // Si el personaje toca el suelo.
  64. Player._y = 554;
  65. // Acá no debería haber Quiet sino FallEnd o...
  66. // depende de la velocidad de la caída???
  67. Quiet();
  68. }
  69. //FALTA: AT, THROW
  70. } else if (Player.Action == 4) {
  71. // Si el personaje está saltando.
  72. Jump();
  73. //FALTA: AT, THROW
  74. } else if (Player.Action == 0.5) {
  75. // Si el personaje está empezando a saltar.
  76. if (Key.isDown(39)) {
  77. // Si se presiona derecha.
  78. if (Player.Facing == -1) {
  79. Player.Facing = 1;
  80. }
  81. Player.SpeedX = 0.9;
  82. } else if (Key.isDown(37)) {
  83. // Si se presiona izquierda.
  84. if (Player.Facing == 1) {
  85. Player.Facing = -1;
  86. }
  87. Player.SpeedX = -0.9;
  88. } else {
  89. Player.SpeedX = 0;
  90. }
  91. //FALTA: AT, THROW, Down?
  92. } else if (Player.Action == 0) {
  93. // Si el personaje está agachado.
  94. if (Key.isDown(40)) {
  95. // Si se presiona abajo.
  96. if (Key.isDown(65)) {
  97. // Si se presiona A.
  98. StartingJump();
  99. } else if (Key.isDown(83)) {
  100. // Si se presiona S.
  101. Player.Attacking = 1;
  102. Player.gotoAndPlay(124);
  103. }
  104. } else {
  105. Quiet ();
  106. }
  107. } else if (Player.Action == 3.5) {
  108. // Si el personaje está saltando pero aún no llegó a cierta altura.
  109. Player.SpeedY = Player.SpeedY+0.1;
  110. if (Player.SpeedY<-3) {
  111. MovingJump();
  112. } else {
  113. // Si el personaje llegó a cierta altura (y perdió cierta velocidad).
  114. Player.Action = 4;
  115. Jump();
  116. }
  117. //FALTA: AT, THROW???
  118. }
  119. //¿FALTA: AT, THROW, AG?
  120. }
  121. }
  122. //JUMP, AG WHILE STARTING AT? AFTER?
  123. //AG
  124. // Otras funciones.
  125. function StartingJump () {
  126. Player.gotoAndPlay(96);
  127. Player.Action = 0.5;
  128. }
  129. function MovingJump () {
  130. Player._x = Player._x+Player.SpeedX;
  131. Player._y = Player._y+Player.SpeedY;
  132. }
  133. function MinJump () {
  134. Player.Action = 3.5;
  135. Player.SpeedY = -4;
  136. MovingJump();
  137. }
  138. function Jump () {
  139. if (Key.isDown(65)) {
  140. // Si se presiona A.
  141. Player.SpeedY = Player.SpeedY+0.1;
  142. if (Player.SpeedY>=0) {
  143. // Si el personaje comienza a caer.
  144. Fall();
  145. }
  146. } else {
  147. // Si se suelta A.
  148. Player.SpeedY = 0.1;
  149. Fall();
  150. }
  151. MovingJump();
  152. }
  153. function Fall () {
  154. Player.Action = 3;
  155. Player.play();
  156. }
  157. function Walk () {
  158. Player.gotoAndPlay(35);
  159. Player.Action = 2;
  160. }
  161. function Attack () {
  162. Player.gotoAndPlay(2);
  163. Player.Attacking = 1;
  164. Player.Action = 1;
  165. }
  166. function FaceRight () {
  167. if (Player.Facing == -1) {
  168. Player.Facing = 1;
  169. Player._xscale = 100;
  170. }
  171. }
  172. function FaceLeft () {
  173. if (Player.Facing == 1) {
  174. Player.Facing = -1;
  175. Player._xscale = -100;
  176. }
  177. }
  178. function Crouch () {
  179. Player.gotoAndStop(96);
  180. Player.Action = 0;
  181. }
  182. function Quiet () {
  183. Player.gotoAndStop(1);
  184. Player.Action = 1;
  185. }
  186. //Player.SpeedX = 0.9*Player.Facing;
  187. //Jump();

No entiendo qué haces con y y x.
« Última modificación: 29 Mayo 2022, 04:27 am por Tachikomaia » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con movimientos de imagenes
Programación Visual Basic
reeyesg 2 1,784 Último mensaje 17 Junio 2015, 17:43 pm
por reeyesg
[SFML] Movimientos de Texturas
Programación C/C++
DeMoNcRaZy 2 2,121 Último mensaje 21 Junio 2015, 20:25 pm
por DeMoNcRaZy
[AYUDA] Deshacer movimientos
Programación C/C++
Kougami 1 1,947 Último mensaje 21 Marzo 2017, 17:25 pm
por MAFUS
SFML
Programación C/C++
Beginner Web 1 2,008 Último mensaje 13 Octubre 2018, 10:35 am
por Becerra
Programa con un limite de movimientos - ayuda
Ingeniería Inversa
kmi00 0 2,184 Último mensaje 14 Junio 2020, 02:30 am
por kmi00
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines