Salve. Está acontecendo algo estranho com meu script. Coloquei o "character" nas camadas 1 e 4 da layer e da mask, mas não reage com a BridgeArea na camada 4. Inseri um código na Ready para testar: func _ready(): print("Chracter") print(collision_layer) print(collision_mask) Quando executo apenas o character (Pawn) mostra "9" e "9" (1 + 8: dos primeiro e quarto bit) Mas quando executo o GameLevel ele mostra "1" e "1" ,só o primeiro bit referente camada 01 e como não está "setada" a camada 4 não aciona o body_entered da bridge_area Estava testando com a versão beta2, atualizei para a versão beta3 e continuou a mesma coisa. Alguma idéia?
o meu personagem esta colidindo com a ponte fora dela personagem: extends CharacterBody2D class_name BaseCharacter var _is_in_motain: bool = true var _can_atack: bool = true var _atack_animation_name: String = "" @export_category("Values") @export var _move_speed : float = 128.0 @export var _right_atack: String = "" @export var _left_atack: String = "" @export_category("Objects") @export var _sprite2D: Sprite2D @export var _animaçao: AnimationPlayer @export var _ponte: TileMapLayer func _process(_delta: float) -> void: pass func _physics_process(_delta: float) -> void: _move() _atack() _animate()
muito dificil mesmo kkk, mas ta mto legal o curso que vc ta dando :D, mto obrigado
Conteúdo mt bom
Perfeito, muito bom mesmo, sempre tive curiosidade de como era feito.
Já tinha visto e passando novamente para o like. Internet tá muito ruim.
Ponte é muito legal de fazer
Assim que meu Pc chegar quero comprar seu curso muito top
gostei desse tutorial
Tem como fazer algum tipo de barco, automatico ou navegável mesmo.
I'm One Comment 😅
Salve. Está acontecendo algo estranho com meu script. Coloquei o "character" nas camadas 1 e 4 da layer e da mask, mas não reage com a BridgeArea na camada 4. Inseri um código na Ready para testar:
func _ready():
print("Chracter")
print(collision_layer)
print(collision_mask)
Quando executo apenas o character (Pawn) mostra "9" e "9" (1 + 8: dos primeiro e quarto bit)
Mas quando executo o GameLevel ele mostra "1" e "1" ,só o primeiro bit referente camada 01 e como não está "setada" a camada 4 não aciona o body_entered da bridge_area
Estava testando com a versão beta2, atualizei para a versão beta3 e continuou a mesma coisa.
Alguma idéia?
Resolvido. BrigeArea não estava como filha de Bridge 🙂
o meu personagem esta colidindo com a ponte fora dela
personagem:
extends CharacterBody2D
class_name BaseCharacter
var _is_in_motain: bool = true
var _can_atack: bool = true
var _atack_animation_name: String = ""
@export_category("Values")
@export var _move_speed : float = 128.0
@export var _right_atack: String = ""
@export var _left_atack: String = ""
@export_category("Objects")
@export var _sprite2D: Sprite2D
@export var _animaçao: AnimationPlayer
@export var _ponte: TileMapLayer
func _process(_delta: float) -> void:
pass
func _physics_process(_delta: float) -> void:
_move()
_atack()
_animate()
func _move() -> void:
var _direçao: Vector2 = Input.get_vector("mover_direita", "mover_esquerda", "mover_cima", "mover_baixo")
velocity = _direçao * _move_speed
move_and_slide()
func _atack() ->void:
if Input.is_action_just_pressed("left_atack") and _can_atack:
_can_atack = false
_atack_animation_name = _left_atack
set_physics_process(false)
if Input.is_action_just_pressed("right_atack") and _can_atack:
_can_atack = false
_atack_animation_name = _right_atack
set_physics_process(false)
func _animate() -> void:
if velocity.x > 0:
_sprite2D.flip_h = false
if velocity.x < 0:
_sprite2D.flip_h = true
if _can_atack == false:
_animaçao.play(_atack_animation_name)
return
if velocity:
_animaçao.play("run")
return
_animaçao.play("idle")
func _on_animation_finished(anim_name: StringName) -> void:
_can_atack = true
set_physics_process(true)
func update_collision_layer_mask(_type: String) -> void:
if _type == "in":
set_collision_layer_value(1, false)
set_collision_layer_value(2, true)
set_collision_mask_value(1, false)
set_collision_mask_value(2, true)
collision_layer
if _type == "out" :
set_collision_layer_value(1, true)
set_collision_layer_value(2, false)
set_collision_mask_value(1, true)
set_collision_mask_value(2, false)
collision_layer
pass
func update_mountain_stade(_stade: bool) -> void:
_is_in_motain = _stade
if _is_in_motain == false:
_ponte.z_index = 1
if _is_in_motain:
_ponte.z_index = 0
func get_is_in_moutain() -> bool:
return _is_in_motain
ponte:
func _on_body_entered(_body: Node2D) -> void:
if _body is BaseCharacter:
if _body.get_is_in_moutain() == false:
return
_body.update_collision_layer_mask("in")
func _on_body_exited(_body: Node2D) -> void:
if _body is BaseCharacter:
if _body.get_is_in_moutain() == false:
return
_body.update_collision_layer_mask("out")
escada:
extends Area2D
class_name AreaEscada
func _on_body_exited(_body: Node2D) -> void:
if _body is BaseCharacter:
if global_position.y > _body.global_position.y:
_body.update_mountain_stade(true)
if global_position.y < _body.global_position.y:
_body.update_mountain_stade(false)
alguem me ajuda?
Se isso é basico desisto do intermediario 💀 💀 💀
kkkjk parece complicado, mas é mais questão de experiência mesmo