Discord
Login
Community
DARK THEME

Misma acción, diferente sprite

hola queria preguntar como se hace para que cuando el jugador salte muestre otros sprites

Por ejemplo:

Si salta con Arriba muestra salto

Pero si salta con drecha y arriba debe mostrar una voltereta

Una forma que lo hice fue con una variable llamada volt, una forma de resumir sería que detectes cuando deberia tener el frame de giro, y luego de eso en el momento de escoger el frame, veas cual de todos escoger, depende mucho de lo que quieras añadir o que tantos frames tendrá

Player = class
  constructor = function()
    this.x = 0
    this.y = 0
    this.move_x = 0 //Para saber si se mueve de izquierda a derecha
    this.volt = false //Para ver si activo el giro o no
  end
  update = function()
    
    //Detectar para donde se mueve el jugador
    move_x = keyboard.RIGHT-keyboard.LEFT
    
    //Ver si el jugador esta debajo o en el suelo
    //Osea (-40)
    if y <= -40 then
      
      //Si salta entonces dar velocidad de salto
      if keyboard.UP then vy = 4
      
      //Sino reacomodarlo en el suelo y
      //hacer que no siga bajando, además
      //poner volt como false o 0
      else
        volt = false
        y = -40
        vy = 0
      end
    
    //Ver si el jugador esta en el aire
    else
      //Si el jugador se mueve de izquierda a
      //derecha entonces dar volt como true o 1
      if move_x and not volt then volt = true end
      
      //Dar gravedad al jugador
      vy -= 0.1
    end
    
    //Aumentar la variable volt para el
    //efecto de giro de abajo
    if volt then volt+=1 end
    
    //Hacer mover al jugador, y darle gravedad
    x += move_x
    y += vy
  end
  draw = function()
    //Efecto de giro del jugador
    screen.setDrawRotation(volt*10)
    
    //Escojer el sprite
    sprites["player"].setFrame(
      
      //Ver si volt es diferente de 0 y si es
      //entonces escojer el sprite 1 (de giro)
      if volt then 1
      
      //Sino entonces escoger uno del que se mueve
      elsif move_x then move_x + 3
      
      //Y si es ninguno de los dos, entonces esta quieto
      else 0 end
      
    )
    
    //Dibujar al jugador
    screen.drawSprite("player",x,y,20,20)
    
    //Reacomodar la función que hace ver girado
    screen.setDrawRotation(0)
  end
end

init = function()
  player = new Player()
end
update = function()
  player.update()
end
draw = function()
  screen.clear()
  player.draw()
end

gracias voy a ver como lo adapto al proyecto que estoy haciendo

Post a reply

Progress

Status

Preview
Cancel
Post
Validate your e-mail address to participate in the community