added projectile class and tweaked weapon uberscript
This commit is contained in:
@@ -1,12 +1,5 @@
|
||||
extends RigidBody3D
|
||||
extends Projectile
|
||||
|
||||
var player_position
|
||||
var player_velocity
|
||||
var bullet_active = true
|
||||
var bullet_damage
|
||||
var instance_bullethole
|
||||
var bullet_force_mod
|
||||
var bullet_speed
|
||||
|
||||
@onready var mesh = $Cylinder
|
||||
@onready var particles = $GPUParticles3D
|
||||
|
||||
12
scripts/projectile.gd
Normal file
12
scripts/projectile.gd
Normal file
@@ -0,0 +1,12 @@
|
||||
extends RigidBody3D
|
||||
class_name Projectile
|
||||
|
||||
var player_position
|
||||
var player_velocity
|
||||
var bullet_active = true
|
||||
var bullet_damage
|
||||
var instance_bullethole
|
||||
var bullet_force_mod
|
||||
var bullet_speed
|
||||
var blast_power
|
||||
var blast_radius
|
||||
@@ -1,16 +1,10 @@
|
||||
extends RigidBody3D
|
||||
extends Projectile
|
||||
|
||||
@export var explosion : Resource
|
||||
@export var blast_radius_area : Node
|
||||
@export var radius_shape : Node
|
||||
@export var blast_radius_falloff : Resource
|
||||
|
||||
var blast_power
|
||||
var blast_radius
|
||||
var bullet_speed
|
||||
var player_velocity
|
||||
var bullet_damage
|
||||
var player_position
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
extends RigidBody3D
|
||||
extends Projectile
|
||||
|
||||
@export var max_bounces : int = 10
|
||||
|
||||
@@ -6,11 +6,6 @@ extends RigidBody3D
|
||||
@onready var mesh: MeshInstance3D = $MeshInstance3D
|
||||
@onready var material = mesh.get_surface_override_material(0)
|
||||
|
||||
var bullet_speed
|
||||
var player_velocity
|
||||
var bullet_force_mod
|
||||
var bullet_damage
|
||||
var player_position
|
||||
var bounces = 0
|
||||
var start_time
|
||||
var end_time
|
||||
|
||||
@@ -23,3 +23,5 @@ class_name weapon_resource
|
||||
@export_group("Shotgun Settings")
|
||||
@export var shotgun_spread : Vector3 = Vector3(.1,.1,.1)
|
||||
@export var pellets_per_shot : int = 20
|
||||
@export_group("Rocket Settings")
|
||||
@export var blast_power : float = 50.0
|
||||
|
||||
@@ -73,19 +73,7 @@ func shoot(delta):
|
||||
if !anim_player.is_playing():
|
||||
GameGlobals.gun_ammo[weapon_info.gun_name] -= 1
|
||||
#audio and anims
|
||||
audio_fire.play()
|
||||
anim_player.play("shoot")
|
||||
vibration()
|
||||
if chamber != null:
|
||||
revolver_chamber_rot_amt += 60
|
||||
if weapon_info.smoke_enabled:
|
||||
spawn_muzzle_smoke()
|
||||
player.recoil.add_recoil(Vector3(0,weapon_info.recoil_amount.y,weapon_info.recoil_amount.z),10,10)
|
||||
player.recoil.add_gun_recoil(weapon_info.recoil_amount.x)
|
||||
#player.velocity += player.bullet_ray.global_basis * Vector3(0,0, kick_amount)
|
||||
SignalBus.emit_signal("shot_fired")
|
||||
if weapon_info.fire_mode != 0:
|
||||
cycle_count -= 1
|
||||
|
||||
elif !anim_player.is_playing() and cycle_count != 0:
|
||||
anim_player.play("empty")
|
||||
@@ -145,8 +133,6 @@ func spawn_revolver_casings():
|
||||
casings_chamber_last -= 1
|
||||
|
||||
func shotgun_pellet_spawn():
|
||||
|
||||
GameGlobals.gun_ammo[weapon_info.gun_name] -= 1
|
||||
audio_fire.play()
|
||||
var pellets_remaining = weapon_info.pellets_per_shot
|
||||
|
||||
@@ -154,11 +140,8 @@ func shotgun_pellet_spawn():
|
||||
var lv_x = rng.randf_range(-weapon_info.shotgun_spread.x,weapon_info.shotgun_spread.x)
|
||||
var lv_y = rng.randf_range(-weapon_info.shotgun_spread.y,weapon_info.shotgun_spread.y)
|
||||
# instance bullet
|
||||
var instance_bullet = weapon_info.bullet.asset.instantiate()
|
||||
instance_bullet.position = player.bullet_ray.global_position
|
||||
instance_bullet.transform.basis = player.bullet_ray.global_transform.basis
|
||||
var instance_bullet = projectile_initialize()
|
||||
instance_bullet.linear_velocity += instance_bullet.transform.basis * Vector3(lv_x, lv_y, -weapon_info.bullet_speed) + player.velocity
|
||||
instance_bullet.player_position = player.global_position
|
||||
get_tree().get_root().add_child(instance_bullet)
|
||||
pellets_remaining -= 1
|
||||
|
||||
@@ -178,7 +161,7 @@ func spawn_muzzle_smoke():
|
||||
|
||||
add_child(instance_smoke)
|
||||
|
||||
func bullet_fire():
|
||||
func projectile_initialize():
|
||||
var instance_bullet = weapon_info.bullet.asset.instantiate()
|
||||
instance_bullet.position = player.bullet_ray.global_position
|
||||
#shoot bullet from real gun if gun is folded up
|
||||
@@ -189,10 +172,30 @@ func bullet_fire():
|
||||
instance_bullet.bullet_speed = weapon_info.bullet_speed
|
||||
instance_bullet.player_velocity = player.velocity * transform.basis
|
||||
instance_bullet.bullet_damage = weapon_info.bullet_damage
|
||||
instance_bullet.blast_power = weapon_info.blast_power
|
||||
instance_bullet.bullet_force_mod = weapon_info.bullet_force_mod
|
||||
instance_bullet.instance_bullethole = weapon_info.bullet.bullet_hole.instantiate()
|
||||
if weapon_info.bullet.bullet_hole != null:
|
||||
instance_bullet.instance_bullethole = weapon_info.bullet.bullet_hole.instantiate()
|
||||
instance_bullet.player_position = player.global_position
|
||||
get_tree().current_scene.add_child(instance_bullet)
|
||||
return instance_bullet
|
||||
|
||||
func bullet_fire():
|
||||
audio_fire.play()
|
||||
|
||||
get_tree().current_scene.add_child(projectile_initialize())
|
||||
|
||||
vibration()
|
||||
if chamber != null:
|
||||
revolver_chamber_rot_amt += 60
|
||||
if weapon_info.smoke_enabled:
|
||||
spawn_muzzle_smoke()
|
||||
|
||||
player.recoil.add_recoil(Vector3(0,weapon_info.recoil_amount.y,weapon_info.recoil_amount.z),10,10)
|
||||
player.recoil.add_gun_recoil(weapon_info.recoil_amount.x)
|
||||
SignalBus.emit_signal("shot_fired")
|
||||
|
||||
if weapon_info.fire_mode != 0:
|
||||
cycle_count -= 1
|
||||
|
||||
func swapped_out():
|
||||
queue_free()
|
||||
|
||||
Reference in New Issue
Block a user