en el jugador tengo var is_in_swim = false func _process(_delta): movement() func movement(): var inputAxis = Input.get_axis("Left", "Right") velocity = Vector2(inputAxis * move_speed, velocity.y) move_and_slide() func _physics_process(delta): if not is_on_floor(): velocity.y += GRAVITY * delta if Input.is_action_just_pressed("Jump") and if is_on_floor(): velocity.y = JUMP Que debo poner para que se ponga a nadar en el tile de agua, ya tengo el area2d y todo lo demas de este video
Asi es como lo tengo original para que salte fuera del tile de agua func _physics_process(delta): if not is_on_floor(): velocity.y += GRAVITY * delta if Input.is_action_just_pressed("Jump") and if is_on_floor(): velocity.y = JUMP Que debo de hacer para que se ponga a nada con su explicacion del video ?
Hola, lo hice todo pero le cambie en area2d el var in_swamp yo puse var in_swim : bool = false Y en characterbody2d le puse var is_in_swim : bool = false @export var swim_gravity : float = 0.29 @export var swim_velocidad : float = 7 @export var swim_fuerza : float = -10 func _physics_process(delta): if not is_on_floor(): if(!is_in_swim): velocity.y += GRAVITY * delta else: velocity.y = clampf(velocity.y + (GRAVITY * delta * swim_gravity), -swim_velocidad, swim_velocidad) if Input.is_action_just_pressed("Jump"): if is_on_floor(): velocity.y = JUMP if is_in_swim == true: velocity.y += swim_fuerza Para fusionalo con el salto
Una pregunta. En el script del area2d pones que bodies sea > 0, pero por qué sabe que eso es el tilemap del pantano? Se me escapa... por la mascara de las físicas, que es 2?
lo que pasa es que en el ejercicio estamos usando un area para "detectar" objetos que entran a su rango, y puede suceder que nuestra area tenga dentro a multiples objetos (tiles de pantano, en nuestro ejemplo), entonces...si uno de esos objetos sale de nuestra area necesitamos asegurarnos de que ya no estamos en contacto con otros suelos de pantano que tuviesemos aun en nuestra area. revisando el body_entered me doy cuenta que probablemente tengas razon y no era tan necesaria esa evaluacion...pero te aseguro que en body_exited si se necesita el get_overlapping_bodies() Un saludo :)
Kyme Games Studios podes hacer un tutorial que el player coloque bomba como boberman gracias
Muy interesante, gracias
no entiendo que debo hacer para que se ponga a nadar 😣
en el jugador tengo
var is_in_swim = false
func _process(_delta):
movement()
func movement():
var inputAxis = Input.get_axis("Left", "Right")
velocity = Vector2(inputAxis * move_speed, velocity.y)
move_and_slide()
func _physics_process(delta):
if not is_on_floor():
velocity.y += GRAVITY * delta
if Input.is_action_just_pressed("Jump") and if is_on_floor():
velocity.y = JUMP
Que debo poner para que se ponga a nadar en el tile de agua, ya tengo el area2d y todo lo demas de este video
Asi es como lo tengo original para que salte fuera del tile de agua
func _physics_process(delta):
if not is_on_floor():
velocity.y += GRAVITY * delta
if Input.is_action_just_pressed("Jump") and if is_on_floor():
velocity.y = JUMP
Que debo de hacer para que se ponga a nada con su explicacion del video ?
Hola, lo hice todo pero le cambie en area2d el var in_swamp yo puse var in_swim : bool = false
Y en characterbody2d le puse
var is_in_swim : bool = false
@export var swim_gravity : float = 0.29
@export var swim_velocidad : float = 7
@export var swim_fuerza : float = -10
func _physics_process(delta):
if not is_on_floor():
if(!is_in_swim):
velocity.y += GRAVITY * delta
else:
velocity.y = clampf(velocity.y + (GRAVITY * delta * swim_gravity), -swim_velocidad, swim_velocidad)
if Input.is_action_just_pressed("Jump"):
if is_on_floor():
velocity.y = JUMP
if is_in_swim == true:
velocity.y += swim_fuerza
Para fusionalo con el salto
Pero no vale, solo se activa en el tile del agua la poca gravedad que puse y ya esta
usted sabe a que se debe que no pueda que nade el jugador ?
porque sera ?
Una pregunta. En el script del area2d pones que bodies sea > 0, pero por qué sabe que eso es el tilemap del pantano? Se me escapa... por la mascara de las físicas, que es 2?
lo que pasa es que en el ejercicio estamos usando un area para "detectar" objetos que entran a su rango, y puede suceder que nuestra area tenga dentro a multiples objetos (tiles de pantano, en nuestro ejemplo), entonces...si uno de esos objetos sale de nuestra area necesitamos asegurarnos de que ya no estamos en contacto con otros suelos de pantano que tuviesemos aun en nuestra area.
revisando el body_entered me doy cuenta que probablemente tengas razon y no era tan necesaria esa evaluacion...pero te aseguro que en body_exited si se necesita el get_overlapping_bodies()
Un saludo :)