How do I fire a bullet at the player in 3D? (Enemy firing at Player)

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By fox1986

I am asking this because I didn’t find any example how to make an enemy firing a bullet at the player in Godot (just the other way round). I am also pretty new to Godot.

This is what I’ve tried so far:

(Bot1 (KinematicBody Enemy node):

var fire_delay
var max_fire_delay = .25

var bot1_laser_scene = preload("res://Enemies/Bot1_Laser.tscn")

func _ready():
	fire_delay = max_fire_delay
	add_to_group("Enemy")

func _process(delta):
	var playerPosition = get_node("../Player").get_translation()
	look_at(playerPosition, UP)
	var follow_vect = (playerPosition-get_translation()).normalized()*delta*speed
	move_and_slide(follow_vect)
	shoot(delta)

func shoot(delta):
	if fire_delay < 0:
		var shot = bot1_laser_scene.instance()
		shot.global_transform.origin = global_transform.origin
		shot.rotation = rotation
		get_tree().root.add_child(shot)
		fire_delay = max_fire_delay
	else:
		fire_delay -= 1.0 * delta

(Bot1_Laser (KinematicBody Enemy’s Bullet (Bot1_Laser) node):

extends KinematicBody
var ttl = 1.5
var speed = 2

func _ready():
	pass
	
func _process(delta):
	if ttl < 0:
		queue_free()
	else:
		ttl -= delta
		var follow_vect = get_translation().normalized()*delta*speed
		translate(follow_vect)

The bots are facing into the players direction, and the shoot function is triggered regularly,
however there are not bullets fired. Any idea whats wrong here?

:bust_in_silhouette: Reply From: Okan Ozdemir

you haven’t added the children of instance scene. Here you go:

extends RigidBody

const Z_FRONT = -1 #in this game the front side is towards negative Z

var THRUST_Z = 2000

var power_throw = 0
var speed_value = 0

const THRUST_TURN = 100  #2200 

export var player_pos = Vector3()
export var ray_length = 10000000

export var mouse_pos = Vector2()

var camera
export var from = Vector3()
export var to = Vector3()
var space_state
var result

var holder = Vector3()
var holder2

var op = preload("res://Scenes/SceneObjects/RigidBallInstance.tscn").instance()

var minimap_icon = "player"
var look_vector = Vector3()

var carried_object = null

var followed_object = null

var a_body_name

#onready var leftEngineParticles = $ParticlesLeftEngine
#onready var rightEngineParticles = $ParticlesRightEngine
onready var cameravi = get_node("/root/Node/CameraGimbal/InnerGimbal/Camera")


#onready var cameravi = get_node("/root/Node/Player/Spatial/InterpolatedCamera")
var target

var lookat2

var biggerball
var speedy_one

#var wasThrust = false #particles enabled?
# damping: see linear and angular damping parameters
#onready var Pause_Menu = get_node("/root/Node_PauseMenu")
func _ready():
	pass


func power_throwing(_delta):
	
	if Input.is_action_pressed("right_mouse"):
		if power_throw <= 250:
			print(power_throw)
			power_throw += .1
			biggerball.scale = Vector3(power_throw, power_throw, power_throw)
	if Input.is_action_pressed("left_mouse"):
		get_node("..").add_child(op)
		op.scale = Vector3(0.1,0.1,0.1)
		op.mass = 1
		op.angular_damp = -1
		op.linear_damp = 0.18
		op.transform.origin = Vector3(lookat2.get_global_transform().origin.x, lookat2.get_global_transform().origin.y + 5, lookat2.get_global_transform().origin.z)
		look_vector = (Vector3(result.position.x, result.position.y, result.position.z) - cameravi.get_global_transform().origin).normalized()
		op.apply_impulse(Vector3(), get_node(".").look_vector * Vector3(333, 333, 333))