Looks like you're not logged in

Login or Register to continue

Lesson Q&A

Use this space for questions related to what you're learning. For any other type of support (website, learning platform, payments, etc...) please get in touch using the contact form.

  • My mob don't want to shoot mePixAngelI don't understand why my mob don't want to shoot the player. I've been looking for this issue for two hours now... and nothing I share all my scripts, if anyone has an idea of what I'm doing wrong : mob_2.gd: ```gdscript class_name Mob2 extends Mob @onready var area_2d: Area2D = %Area2D @onready var weapon_2: AutoWeapon = $Marker2D/Weapon2 @onready var _cool_down_timer: Timer = %CoolDownTimer func _ready() -> void: super() _cool_down_timer.wait_time = 1.0 _cool_down_timer.timeout.connect(func () -> void: if _player != null: weapon_2.shoot() ) _cool_down_timer.start() func _physics_process(delta: float) -> void: var desired_velocity = Vector2.ZERO if _player != null: var direction = global_position.direction_to(_player.global_position) var distance = global_position.distance_to(_player.global_position) desired_velocity = direction * max_speed weapon_2.look_at(_player.global_position) velocity = velocity.move_toward(desired_velocity, acceleration * delta) move_and_slide() ``` bullet_2.gd: ```gdscript class_name Bullet_2 extends Area2D @onready var _destroy_sound: AudioStreamPlayer = %AudioStreamPlayer @export var max_speed := 950.0 @export var max_range := 1200.0 @export var damage := 1 @export var target_player : bool : set = set_target_player var traveled_distance := 0.0 func _ready() -> void: body_entered.connect(func (body : Node) -> void: if body is Mob2 or body is Player: body.health -= damage _destroy() ) set_target_player(target_player) func _physics_process(delta: float) -> void: var direction = Vector2.RIGHT.rotated(rotation) var velocity = direction * max_speed position += velocity * delta traveled_distance += max_speed * delta if traveled_distance > max_range: _destroy() func _destroy() -> void: set_physics_process(false) queue_free() func _on_body_entered(body : Node): if body is Player: body.health -= damage _destroy() func set_target_player(value : bool) -> void: target_player = value const PLAYER_PHYSICS_LAYER = 1 const MOB_PHYSICS_LAYER = 3 set_collision_layer_value(MOB_PHYSICS_LAYER, not target_player) set_collision_layer_value(PLAYER_PHYSICS_LAYER, target_player) ``` weapon2.gd: ```gdscript class_name AutoWeapon extends Weapon @export var bullet_2 : PackedScene = null @onready var _cool_down_timer: Timer = %CoolDownTimer func _physics_process(delta: float) -> void: return func shoot() -> void: var new_bullet : Bullet_2 = bullet_2.instantiate() get_tree().current_scene.add_child(new_bullet) new_bullet.target_player = true new_bullet.global_position = global_position new_bullet.global_rotation = global_rotation new_bullet.rotation += randf_range(-PI / 30.0, PI / 30.0) ``` 4 0 Jan. 23, 2025
Site is in BETA!found a bug?