Question:
The bullets are not disappering when hitting a wall. Here’s my code:
extends Area2D
var speed = 750
@onready var body = $CollisionShape2D
func _physics_process(delta):
position += transform.x * speed * delta
# Called when the node enters the scene tree for the first time.
func _ready():
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
$AnimationPlayer2.current_animation = "Bullet"
pass
func _on_body_entered(body):
if body.is_in_group("Ghosts") or body.is_in_group("Block") or body.is_in_group("Player"):
queue_free()
pass # Replace with function body.
if this code is for the bullet, then this block of code should be written inside wall’s script code, not this bullet code, and use body.queue_free() to destroy any node (body) that touches it
did you connect the body_entered signal from bullet’s Area2D or the wall’s Area2d?
I don’t know how to do that because the bullet is in another scene and is set to spawn when you click. Im gussing that you can’t connect signals though scenes. Here is a picture and the code for the gun that spawns in the bullet as well
extends RigidBody2D
@onready var playerlocate = get_tree().get_root().get_node("/root/Node2D/player/CollisionShape2D")
@export var radius = 60
var direction: Vector2
var speed: int = 10
var bulletPath = preload('res://Images/PlayerBullet.tscn')
@onready var attackcool = $CooldownPlayer
func _ready():
pass
func _process(delta: float) -> void:
var mouse_pos = get_global_mouse_position()
var player_pos = playerlocate.global_transform.origin
var distance = player_pos.distance_to(mouse_pos)
var mouse_dir = (mouse_pos-player_pos).normalized()
look_at(get_global_mouse_position())
rotation_degrees += 90
if distance > radius:
mouse_pos = player_pos + (mouse_dir * radius)
global_transform.origin = mouse_pos
if global_position.x - get_global_mouse_position().x < 0:
$Sprite2DGun.scale.y = 2.386
else:
$Sprite2DGun.scale.y = -2.386
pass
# Called when the node enters the scene tree for the first time.
func move_weapon():
var mouse_position = get_local_mouse_position()
rotation = mouse_position.angle()
pass
func _physics_process(delta):
if Input.is_action_just_released("left click"):
shoot()
pass
func shoot():
if attackcool.is_stopped():
var bullet = bulletPath.instantiate()
$AnimationPlayer.play("Gun Shoot")
attackcool.start()
pass