spider turret working
This commit is contained in:
@@ -1,23 +0,0 @@
|
||||
extends AnimatableBody3D
|
||||
|
||||
|
||||
const SPEED = 30.0
|
||||
|
||||
@onready var mesh = $MeshInstance3D
|
||||
@onready var ray = $RayCast3D
|
||||
@onready var particles = $GPUParticles3D
|
||||
|
||||
# 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):
|
||||
|
||||
|
||||
position += transform.basis * Vector3(0, 0, -SPEED) * delta
|
||||
|
||||
|
||||
func _on_timer_timeout():
|
||||
queue_free()
|
||||
43
scripts/bullet_enemy.gd
Normal file
43
scripts/bullet_enemy.gd
Normal file
@@ -0,0 +1,43 @@
|
||||
extends Node3D
|
||||
|
||||
var bullet_speed
|
||||
var bullet_drop
|
||||
var random_spread_amt
|
||||
var bullet_damage
|
||||
var instance_bullethole
|
||||
var bullet_force_mod = 1.0
|
||||
var distance_from_player
|
||||
var player
|
||||
|
||||
@onready var mesh = $gunbullet1
|
||||
@onready var ray = $RayCast3D
|
||||
@onready var particles = $GPUParticles3D
|
||||
@onready var enemy_particles = $GPUParticlesEnemy
|
||||
@onready var timer = $Timer
|
||||
@onready var gunbullet1 = $gunbullet1/Cylinder
|
||||
@onready var hit_indicator = $Audio/HitIndicator
|
||||
|
||||
|
||||
|
||||
var rng = RandomNumberGenerator.new()
|
||||
var av_x
|
||||
var av_y
|
||||
var av_z
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
|
||||
#apply random rotation
|
||||
av_x = deg_to_rad(rng.randf_range(-random_spread_amt,random_spread_amt))
|
||||
av_y = deg_to_rad(rng.randf_range(-random_spread_amt,random_spread_amt))
|
||||
av_z = deg_to_rad(rng.randf_range(-random_spread_amt,random_spread_amt))
|
||||
rotation += Vector3(av_x,av_y,av_z)
|
||||
timer.start()
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta):
|
||||
position += transform.basis * Vector3(0, 0, -bullet_speed) * delta
|
||||
rotation.x = clamp(rotation.x - delta * bullet_drop,deg_to_rad(-90),deg_to_rad(90))
|
||||
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
extends Node3D
|
||||
|
||||
var bullet_speed
|
||||
var bullet_drop
|
||||
var random_spread_amt
|
||||
var bullet_damage
|
||||
|
||||
@onready var mesh = $gunbullet1
|
||||
@onready var timer = $Timer
|
||||
@onready var gunbullet1 = $gunbullet1/Cylinder
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta):
|
||||
position += transform.basis * Vector3(0, 0, -bullet_speed) * delta
|
||||
rotation.x = clamp(rotation.x - delta * bullet_drop,deg_to_rad(-90),deg_to_rad(90))
|
||||
|
||||
await get_tree().create_timer(.01).timeout
|
||||
queue_free()
|
||||
@@ -183,12 +183,14 @@ func _physics_process(delta):
|
||||
|
||||
#Weapon Swap Up
|
||||
if Input.is_action_just_pressed("scroll_up") and !gun.anim_player.is_playing():
|
||||
gun.anim_player.play("swap_out")
|
||||
level_control.gun_spawn(level_control.current_gun_index + 1)
|
||||
if level_control.held_guns.size() > 1:
|
||||
gun.anim_player.play("swap_out")
|
||||
level_control.gun_spawn(level_control.current_gun_index + 1)
|
||||
#Weapon Swap Down
|
||||
if Input.is_action_just_pressed("scroll_down") and !gun.anim_player.is_playing():
|
||||
gun.anim_player.play("swap_out")
|
||||
level_control.gun_spawn(level_control.current_gun_index - 1)
|
||||
if level_control.held_guns.size() > 1:
|
||||
gun.anim_player.play("swap_out")
|
||||
level_control.gun_spawn(level_control.current_gun_index - 1)
|
||||
|
||||
|
||||
#interact button
|
||||
|
||||
@@ -4,27 +4,50 @@ var player = null
|
||||
@export var health = 3
|
||||
@export var number_of_drops = 3
|
||||
|
||||
const SPEED = 3.0
|
||||
const SPEED = 0.0
|
||||
const MAX_LV = 10
|
||||
const MAX_AV = 10
|
||||
|
||||
@export var player_path : NodePath
|
||||
@export var bullet : Resource
|
||||
@export var bullet_speed = 150
|
||||
@export var bullet_drop = .1
|
||||
@export var random_spread_amt = .01
|
||||
@export var bullet_damage = 1
|
||||
@export var turret_look_speed = 3
|
||||
|
||||
@onready var nav_agent = $NavigationAgent3D
|
||||
@onready var target = $body/target
|
||||
@onready var movement_shape = $MovementShape
|
||||
@onready var barrel_1 = $TurretLook/Turret/Barrel1
|
||||
@onready var barrel_2 = $TurretLook/Turret/Barrel2
|
||||
@onready var prefire_timer = $Timers/prefire_timer
|
||||
@onready var postfire_timer = $Timers/postfire_timer
|
||||
@onready var retarget_timer = $Timers/retarget_timer
|
||||
@onready var turret_look_next = $TurretLookNext
|
||||
@onready var spider_look_next = $SpiderLookNext
|
||||
|
||||
|
||||
@onready var turret = $TurretLook/Turret
|
||||
@onready var turret_material = turret.mesh.surface_get_material(2)
|
||||
|
||||
var stamina = load("res://assets/stamina_pickup.tscn")
|
||||
var ammo = load("res://assets/ammo_pickup.tscn")
|
||||
var money = load("res://assets/money_1.tscn")
|
||||
var die_particles = load("res://assets/die_particles.tscn")
|
||||
@onready var turret_look = $TurretLook
|
||||
|
||||
var particlespawn
|
||||
var rng = RandomNumberGenerator.new()
|
||||
var rand_select
|
||||
var rand_item
|
||||
var body_look_to
|
||||
|
||||
func _ready():
|
||||
player = get_node(player_path)
|
||||
postfire_timer.start()
|
||||
turret_material.emission_enabled = false
|
||||
retarget_timer.start()
|
||||
|
||||
func _process(delta):
|
||||
velocity = Vector3.ZERO
|
||||
@@ -34,8 +57,10 @@ func _process(delta):
|
||||
var next_nav_point = nav_agent.get_next_path_position()
|
||||
velocity = (next_nav_point - global_transform.origin).normalized() * SPEED
|
||||
|
||||
turret_look_next.look_at(Vector3(player.global_position.x, global_position.y, player.global_position.z), Vector3.UP)
|
||||
turret_look_next.look_at(player.global_position,Vector3.UP)
|
||||
turret_look.rotation = lerp(turret_look.rotation,turret_look_next.rotation,delta * turret_look_speed)
|
||||
|
||||
look_at(Vector3(player.global_position.x, global_position.y, player.global_position.z), Vector3.UP)
|
||||
|
||||
move_and_slide()
|
||||
|
||||
@@ -77,3 +102,38 @@ func _on_area_3d_body_part_hit(dam,bullet_damage):
|
||||
number_of_drops -= 1
|
||||
|
||||
queue_free()
|
||||
|
||||
|
||||
func _on_prefire_timer_timeout():
|
||||
#barrel 1 fire
|
||||
var instance_bullet = bullet.instantiate()
|
||||
instance_bullet.position = barrel_1.global_position
|
||||
instance_bullet.transform.basis = barrel_1.global_transform.basis
|
||||
instance_bullet.bullet_speed = bullet_speed
|
||||
instance_bullet.bullet_drop = bullet_drop
|
||||
instance_bullet.random_spread_amt = random_spread_amt
|
||||
instance_bullet.bullet_damage = bullet_damage
|
||||
get_tree().get_root().add_child(instance_bullet)
|
||||
|
||||
#barrel 2 fire
|
||||
var instance_bullet2 = bullet.instantiate()
|
||||
instance_bullet2.position = barrel_2.global_position
|
||||
instance_bullet2.transform.basis = barrel_2.global_transform.basis
|
||||
instance_bullet2.bullet_speed = bullet_speed
|
||||
instance_bullet2.bullet_drop = bullet_drop
|
||||
instance_bullet2.random_spread_amt = random_spread_amt
|
||||
instance_bullet2.bullet_damage = bullet_damage
|
||||
get_tree().get_root().add_child(instance_bullet2)
|
||||
turret_material.emission_enabled = false
|
||||
prefire_timer.stop()
|
||||
postfire_timer.start()
|
||||
|
||||
|
||||
func _on_postfire_timer_timeout():
|
||||
#if turret_look.is_colliding() and turret_look.get_collider().is_in_group("player"):
|
||||
prefire_timer.start()
|
||||
turret_material.emission_enabled = true
|
||||
|
||||
|
||||
func _on_retarget_timer_timeout():
|
||||
pass #turret_look_next.look_at(player.global_position,Vector3.UP)
|
||||
|
||||
Reference in New Issue
Block a user