Additional resource tweaks.
This commit is contained in:
parent
2c2b23f0bb
commit
6c41810add
5 changed files with 36 additions and 7 deletions
|
|
@ -14,4 +14,5 @@ spacing = 30.0
|
|||
origin = -15
|
||||
horizontal_offset = 8.5
|
||||
stagger_offset = 0.2
|
||||
stagger_animation = true
|
||||
metadata/_custom_type_script = "uid://7n1itonn35fm"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
[gd_resource type="Resource" script_class="WeaponShot" format=3 uid="uid://bhc6aja38vyr"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://clpyd8qfwthk2" path="res://scenes/player_weapons/weapon_spreadshot.tscn" id="1_hm46f"]
|
||||
[ext_resource type="PackedScene" uid="uid://ddpclu2vdy2ve" path="res://scenes/player_weapons/weapon_stock.tscn" id="1_hm46f"]
|
||||
[ext_resource type="Script" uid="uid://7n1itonn35fm" path="res://scripts/weapon_shot.gd" id="2_w7xlm"]
|
||||
|
||||
[resource]
|
||||
|
|
@ -14,4 +14,5 @@ spacing = 30.0
|
|||
origin = -15
|
||||
horizontal_offset = 8.25
|
||||
stagger_offset = 0.5
|
||||
stagger_animation = true
|
||||
metadata/_custom_type_script = "uid://7n1itonn35fm"
|
||||
|
|
|
|||
|
|
@ -41,3 +41,21 @@ func _on_visible_on_screen_notifier_2d_screen_exited():
|
|||
func set_weapon_data(bullet_scene_param: PackedScene, shot_data_param: WeaponShot):
|
||||
bullet_scene = bullet_scene_param
|
||||
shot_data = shot_data_param
|
||||
|
||||
# Function to offset animation playback for staggered visual effect
|
||||
func set_animation_offset(offset: float) -> void:
|
||||
var sprite = $AnimatedSprite2D
|
||||
if sprite:
|
||||
var frames = sprite.sprite_frames
|
||||
if frames:
|
||||
var animation = sprite.animation
|
||||
var frame_count = frames.get_frame_count(animation)
|
||||
if frame_count > 0:
|
||||
# Calculate average frame duration from actual frame timings
|
||||
var total_duration = 0.0
|
||||
for i in range(frame_count):
|
||||
total_duration += frames.get_frame_duration(animation, i)
|
||||
var avg_frame_duration = total_duration / frame_count
|
||||
# Convert time offset to frame offset, wrap within animation length
|
||||
var frame_offset = fposmod(offset / avg_frame_duration, float(frame_count))
|
||||
sprite.frame = int(frame_offset)
|
||||
|
|
|
|||
|
|
@ -26,7 +26,6 @@ func shoot():
|
|||
|
||||
# Calculate horizontal offset for this bullet (symmetrical: left=-ve, right=+ve)
|
||||
var bullet_horizontal_offset: float = index_from_center * weapon_data.horizontal_offset
|
||||
print("horizontal_offset: ", weapon_data.horizontal_offset, " index: ", index_from_center, " result: ", bullet_horizontal_offset)
|
||||
|
||||
# Calculate vertical offset from center point (symmetrical vertical spread)
|
||||
var distance_from_center: float = abs(index_from_center)
|
||||
|
|
@ -42,5 +41,9 @@ func shoot():
|
|||
# Set the bullet data
|
||||
bullet.set_weapon_data(weapon_data.bullet_scene, weapon_data)
|
||||
|
||||
# Offset animation playback per projectile if enabled
|
||||
if weapon_data.stagger_animation:
|
||||
bullet.set_animation_offset(index_from_center * weapon_data.stagger_offset)
|
||||
|
||||
# Subtract projectile spacing from current Player travel for next shot
|
||||
player.travel -= weapon_data.spacing
|
||||
|
|
|
|||
|
|
@ -1,17 +1,23 @@
|
|||
class_name WeaponShot
|
||||
extends Resource
|
||||
|
||||
@export_category("Info")
|
||||
@export_category("Parameters")
|
||||
@export var shot_name: String
|
||||
@export var bullet_scene: PackedScene = null
|
||||
|
||||
@export_category("Shot Data")
|
||||
@export var damage: int = 1
|
||||
@export var speed: int = 135
|
||||
@export var projectiles: int = 2
|
||||
# Vertical spacing between projectiles
|
||||
@export var spacing: float = 35
|
||||
# Origin offset from center of player
|
||||
@export var origin: int = -23
|
||||
|
||||
@export_category("Spread")
|
||||
@export var horizontal_offset: float = 6.5 # Horizontal distance between projectiles
|
||||
@export var stagger_offset: float = 0.25 # Time delay per projectile index
|
||||
# Horizontal distance between projectiles
|
||||
@export var horizontal_offset: float = 6.5
|
||||
# Time delay per projectile index
|
||||
@export var stagger_offset: float = 0.25
|
||||
|
||||
@export_category("Effects")
|
||||
# Offset animation playback per projectile index
|
||||
@export var stagger_animation: bool = false
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue