Initial commit
@ -0,0 +1,2 @@
|
||||
# Normalize EOL for all files that Git considers text files.
|
||||
* text=auto eol=lf
|
||||
@ -0,0 +1,18 @@
|
||||
# Godot 4+ specific ignores
|
||||
.godot/
|
||||
|
||||
# Godot-specific ignores
|
||||
.import/
|
||||
export.cfg
|
||||
export_presets.cfg
|
||||
|
||||
# Imported translations (automatically generated from CSV files)
|
||||
*.translation
|
||||
|
||||
# Mono-specific ignores
|
||||
.mono/
|
||||
data_*/
|
||||
mono_crash.*.json
|
||||
|
||||
# Kenney ignores
|
||||
build/
|
||||
@ -0,0 +1,8 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://b411hfkru5vs7"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://b2p7bbkuxf7m" path="res://models/blaster.glb" id="1_yqvvx"]
|
||||
|
||||
[node name="blaster" instance=ExtResource("1_yqvvx")]
|
||||
|
||||
[node name="blaster2" parent="." index="0"]
|
||||
layers = 2
|
||||
@ -0,0 +1,47 @@
|
||||
[gd_scene load_steps=6 format=3 uid="uid://d2g78tpqbyf5g"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://lde2xq3vq635" path="res://models/enemy-flying.glb" id="1_3v8nl"]
|
||||
[ext_resource type="Script" path="res://scripts/enemy.gd" id="1_jg24b"]
|
||||
[ext_resource type="SpriteFrames" uid="uid://dbv3sy5qjatnl" path="res://sprites/burst_animation.tres" id="3_iblw5"]
|
||||
[ext_resource type="Texture2D" uid="uid://diluv5007my5w" path="res://sprites/tracer.png" id="4_pknwg"]
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_iix87"]
|
||||
radius = 0.75
|
||||
|
||||
[node name="enemy-flying" type="Area3D"]
|
||||
script = ExtResource("1_jg24b")
|
||||
|
||||
[node name="enemy-flying" parent="." instance=ExtResource("1_3v8nl")]
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.25, 0)
|
||||
shape = SubResource("SphereShape3D_iix87")
|
||||
|
||||
[node name="RayCast" type="RayCast3D" parent="."]
|
||||
target_position = Vector3(0, 0, 5)
|
||||
|
||||
[node name="BurstA" type="AnimatedSprite3D" parent="."]
|
||||
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, -0.45, 0.3, 0.4)
|
||||
sprite_frames = ExtResource("3_iblw5")
|
||||
frame = 2
|
||||
|
||||
[node name="BurstB" type="AnimatedSprite3D" parent="."]
|
||||
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0.45, 0.3, 0.4)
|
||||
sprite_frames = ExtResource("3_iblw5")
|
||||
frame = 2
|
||||
|
||||
[node name="Timer" type="Timer" parent="."]
|
||||
wait_time = 0.25
|
||||
autostart = true
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="."]
|
||||
transform = Transform3D(-4.37114e-08, -0.5, 4.37114e-08, 0, -2.18557e-08, -1, 1, -2.18557e-08, 1.91069e-15, -0.458562, 0.296903, 2.63393)
|
||||
visible = false
|
||||
texture = ExtResource("4_pknwg")
|
||||
|
||||
[node name="Sprite3D2" type="Sprite3D" parent="."]
|
||||
transform = Transform3D(-4.37114e-08, -0.5, 4.37114e-08, 0, -2.18557e-08, -1, 1, -2.18557e-08, 1.91069e-15, 0.452015, 0.296903, 2.63393)
|
||||
visible = false
|
||||
texture = ExtResource("4_pknwg")
|
||||
|
||||
[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"]
|
||||
@ -0,0 +1,270 @@
|
||||
extends CharacterBody3D
|
||||
|
||||
@export_subgroup("Properties")
|
||||
@export var movement_speed = 250
|
||||
@export var jump_strength = 7
|
||||
|
||||
@export_subgroup("Weapons")
|
||||
@export var weapons: Array[Weapon] = []
|
||||
|
||||
var weapon: Weapon
|
||||
var weapon_index := 0
|
||||
|
||||
var mouse_sensitivity = 700
|
||||
var mouse_captured := true
|
||||
|
||||
var movement_velocity: Vector3
|
||||
var rotation_target: Vector3
|
||||
|
||||
var input: Vector3
|
||||
var input_mouse: Vector2
|
||||
|
||||
var gravity := 0.0
|
||||
|
||||
var previously_floored := false
|
||||
|
||||
var jump_single := true
|
||||
var jump_double := true
|
||||
|
||||
var container_offset = Vector3(1.2, -1.1, -2.75)
|
||||
|
||||
var tween:Tween
|
||||
|
||||
@onready var sound_footsteps = $SoundFootsteps
|
||||
@onready var item_container = $Head/Camera/SubViewportContainer/SubViewport/CameraItem/Container
|
||||
@onready var camera = $Head/Camera
|
||||
@onready var raycast = $Head/Camera/ShootCast
|
||||
@onready var blaster_cooldown = $BlasterCooldown
|
||||
@onready var burst = $Head/Camera/SubViewportContainer/SubViewport/CameraItem/Burst
|
||||
|
||||
@export var crosshair:TextureRect
|
||||
|
||||
# Functions
|
||||
|
||||
func _ready():
|
||||
|
||||
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
||||
|
||||
change_weapon(weapon_index)
|
||||
|
||||
func _process(delta):
|
||||
|
||||
# Handle functions
|
||||
|
||||
handle_controls(delta)
|
||||
handle_gravity(delta)
|
||||
|
||||
# Movement
|
||||
|
||||
var applied_velocity: Vector3
|
||||
|
||||
movement_velocity = transform.basis * movement_velocity # Move forward
|
||||
|
||||
applied_velocity = velocity.lerp(movement_velocity, delta * 10)
|
||||
applied_velocity.y = -gravity
|
||||
|
||||
velocity = applied_velocity
|
||||
move_and_slide()
|
||||
|
||||
# Rotation
|
||||
|
||||
camera.rotation.z = lerp_angle(camera.rotation.z, -input_mouse.x * 1.25, delta * 5)
|
||||
|
||||
camera.rotation.x = lerp_angle(camera.rotation.x, rotation_target.x, delta * 25)
|
||||
rotation.y = lerp_angle(rotation.y, rotation_target.y, delta * 25)
|
||||
|
||||
item_container.rotation.y = lerp_angle(item_container.rotation.y, -input_mouse.x * 4, delta * 5)
|
||||
#item_container.rotation.x = lerp_angle(item_container.rotation.x, -rotation_target.x / 3, delta * 10)
|
||||
|
||||
item_container.position = lerp(item_container.position, container_offset - (applied_velocity / 30), delta * 10)
|
||||
|
||||
# Movement sound
|
||||
|
||||
sound_footsteps.stream_paused = true
|
||||
|
||||
if is_on_floor():
|
||||
if abs(velocity.x) > 1 or abs(velocity.z) > 1:
|
||||
sound_footsteps.stream_paused = false
|
||||
|
||||
# Landing after jump or falling
|
||||
|
||||
camera.position.y = lerp(camera.position.y, 0.0, delta * 5)
|
||||
|
||||
if is_on_floor() and gravity > 1 and !previously_floored: # Landed
|
||||
Audio.play("sounds/land.ogg")
|
||||
camera.position.y = -0.1
|
||||
|
||||
previously_floored = is_on_floor()
|
||||
|
||||
input_mouse = Vector2.ZERO
|
||||
|
||||
# Mouse movement
|
||||
|
||||
func _input(event):
|
||||
if event is InputEventMouseMotion and mouse_captured:
|
||||
|
||||
input_mouse = event.relative / mouse_sensitivity
|
||||
|
||||
rotation_target.y -= event.relative.x / mouse_sensitivity
|
||||
rotation_target.x -= event.relative.y / mouse_sensitivity
|
||||
rotation_target.x = clamp(rotation_target.x, deg_to_rad(-90), deg_to_rad(90))
|
||||
|
||||
func handle_controls(delta):
|
||||
|
||||
# Mouse capture
|
||||
|
||||
if Input.is_action_just_pressed("mouse_capture"):
|
||||
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
||||
mouse_captured = true
|
||||
|
||||
if Input.is_action_just_pressed("mouse_capture_exit"):
|
||||
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
|
||||
mouse_captured = false
|
||||
|
||||
# Movement
|
||||
|
||||
input.x = Input.get_axis("move_left", "move_right")
|
||||
input.z = Input.get_axis("move_forward", "move_back")
|
||||
|
||||
movement_velocity = input.normalized() * movement_speed * delta
|
||||
|
||||
# Shooting
|
||||
|
||||
if Input.is_action_pressed("shoot"):
|
||||
shoot()
|
||||
|
||||
# Jumping
|
||||
|
||||
if Input.is_action_just_pressed("jump"):
|
||||
|
||||
if jump_single or jump_double:
|
||||
Audio.play_random("sounds/jump_a.ogg, sounds/jump_b.ogg, sounds/jump_c.ogg")
|
||||
|
||||
if jump_double:
|
||||
|
||||
gravity = -jump_strength
|
||||
|
||||
jump_double = false
|
||||
|
||||
if(jump_single): jump()
|
||||
|
||||
# Weapon switching
|
||||
|
||||
if Input.is_action_just_pressed("weapon_next"):
|
||||
next_weapon()
|
||||
|
||||
# Handle gravity
|
||||
|
||||
func handle_gravity(delta):
|
||||
|
||||
gravity += 20 * delta
|
||||
|
||||
if gravity > 0 and is_on_floor():
|
||||
|
||||
jump_single = true
|
||||
gravity = 0
|
||||
|
||||
# Jumping
|
||||
|
||||
func jump():
|
||||
|
||||
gravity = -jump_strength
|
||||
|
||||
jump_single = false;
|
||||
jump_double = true;
|
||||
|
||||
# Shooting
|
||||
|
||||
func shoot():
|
||||
|
||||
if !blaster_cooldown.is_stopped(): return
|
||||
|
||||
Audio.play_random(weapon.sound_shoot)
|
||||
item_container.position.z += 0.25
|
||||
|
||||
burst.play("default")
|
||||
burst.rotation_degrees.z = randf_range(-45, 45)
|
||||
burst.scale = Vector3.ONE * randf_range(0.40, 0.75)
|
||||
|
||||
burst.position = item_container.position - Vector3(0.1, -0.4, 1.5)
|
||||
|
||||
blaster_cooldown.start(weapon.cooldown)
|
||||
|
||||
# What or where the blaster hit
|
||||
|
||||
for n in weapon.shot_count:
|
||||
|
||||
raycast.target_position.x = randf_range(-weapon.spread, weapon.spread)
|
||||
raycast.target_position.y = randf_range(-weapon.spread, weapon.spread)
|
||||
|
||||
raycast.force_raycast_update()
|
||||
|
||||
if !raycast.is_colliding():
|
||||
return
|
||||
|
||||
var collider = raycast.get_collider()
|
||||
|
||||
if collider.has_method("damage"):
|
||||
collider.damage(weapon.damage)
|
||||
|
||||
var impact = preload("res://objects/impact.tscn")
|
||||
var impact_instance = impact.instantiate()
|
||||
|
||||
impact_instance.play("shot")
|
||||
|
||||
get_tree().root.add_child(impact_instance)
|
||||
|
||||
impact_instance.position = raycast.get_collision_point() + (raycast.get_collision_normal() / 10)
|
||||
impact_instance.look_at(position, Vector3.UP, true)
|
||||
#impact_instance.rotation_degrees.z = randf_range(-45, 45)
|
||||
# Weapons
|
||||
|
||||
func next_weapon():
|
||||
|
||||
Audio.play("sounds/blaster_change.ogg")
|
||||
|
||||
if weapon_index < weapons.size() - 1:
|
||||
weapon_index += 1
|
||||
else:
|
||||
weapon_index = 0
|
||||
|
||||
change_weapon(weapon_index)
|
||||
|
||||
func change_weapon_apply():
|
||||
|
||||
weapon = weapons[weapon_index]
|
||||
|
||||
# Step 1. Remove all children in (weapon) container
|
||||
|
||||
for n in item_container.get_children():
|
||||
item_container.remove_child(n)
|
||||
|
||||
# Step 2. Load new model into container
|
||||
|
||||
var weapon_model = weapon.model.instantiate()
|
||||
item_container.add_child(weapon_model)
|
||||
|
||||
weapon_model.position = weapon.position
|
||||
weapon_model.rotation_degrees = weapon.rotation
|
||||
|
||||
# Step 3. Set model to only render on layer 2
|
||||
|
||||
for child in weapon_model.find_children("*", "MeshInstance3D"):
|
||||
child.layers = 2
|
||||
|
||||
# Set weapon data
|
||||
|
||||
raycast.target_position = Vector3(0, 0, -1) * weapon.max_distance
|
||||
crosshair.texture = weapon.crosshair
|
||||
|
||||
func change_weapon(index):
|
||||
|
||||
weapon_index = index
|
||||
|
||||
tween = get_tree().create_tween()
|
||||
tween.set_ease(Tween.EASE_OUT_IN)
|
||||
tween.tween_property(item_container, "position", container_offset - Vector3(0, 1, 0), 0.1)
|
||||
tween.tween_callback(change_weapon_apply)
|
||||
|
||||
func get_hurt():
|
||||
pass
|
||||
@ -0,0 +1,77 @@
|
||||
[gd_scene load_steps=8 format=3 uid="uid://dl2ed4gkybggf"]
|
||||
|
||||
[ext_resource type="Script" path="res://actors/player.gd" id="1_ffboj"]
|
||||
[ext_resource type="Resource" uid="uid://cu2gtxlcmbb34" path="res://weapons/blaster-repeater.tres" id="2_6epbw"]
|
||||
[ext_resource type="Texture2D" uid="uid://8ggihh27mlrr" path="res://sprites/blob_shadow.png" id="2_b0fo8"]
|
||||
[ext_resource type="Resource" uid="uid://c56y8pqoyk15f" path="res://weapons/blaster.tres" id="3_kr4p8"]
|
||||
[ext_resource type="SpriteFrames" uid="uid://dbv3sy5qjatnl" path="res://sprites/burst_animation.tres" id="4_m6ukc"]
|
||||
[ext_resource type="AudioStream" uid="uid://cydjn1ct3hps2" path="res://sounds/walking.ogg" id="5_ics1s"]
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_gdq8c"]
|
||||
radius = 0.3
|
||||
height = 1.0
|
||||
|
||||
[node name="Player" type="CharacterBody3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
|
||||
script = ExtResource("1_ffboj")
|
||||
weapons = Array[Resource("res://scripts/weapon.gd")]([ExtResource("3_kr4p8"), ExtResource("2_6epbw")])
|
||||
|
||||
[node name="Collider" type="CollisionShape3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.55, 0)
|
||||
shape = SubResource("CapsuleShape3D_gdq8c")
|
||||
|
||||
[node name="Head" type="Node3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
|
||||
|
||||
[node name="Camera" type="Camera3D" parent="Head"]
|
||||
cull_mask = 1048573
|
||||
current = true
|
||||
fov = 80.0
|
||||
|
||||
[node name="SubViewportContainer" type="SubViewportContainer" parent="Head/Camera"]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
stretch = true
|
||||
|
||||
[node name="SubViewport" type="SubViewport" parent="Head/Camera/SubViewportContainer"]
|
||||
transparent_bg = true
|
||||
handle_input_locally = false
|
||||
msaa_3d = 1
|
||||
size = Vector2i(1280, 720)
|
||||
render_target_update_mode = 4
|
||||
|
||||
[node name="CameraItem" type="Camera3D" parent="Head/Camera/SubViewportContainer/SubViewport"]
|
||||
cull_mask = 1047554
|
||||
fov = 40.0
|
||||
|
||||
[node name="Container" type="Node3D" parent="Head/Camera/SubViewportContainer/SubViewport/CameraItem"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.2, -1, -2.25)
|
||||
|
||||
[node name="Burst" type="AnimatedSprite3D" parent="Head/Camera/SubViewportContainer/SubViewport/CameraItem"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, -0.75, -6)
|
||||
layers = 2
|
||||
sprite_frames = ExtResource("4_m6ukc")
|
||||
frame = 2
|
||||
|
||||
[node name="ShootCast" type="RayCast3D" parent="Head/Camera"]
|
||||
exclude_parent = false
|
||||
target_position = Vector3(0, 0, -10)
|
||||
collide_with_areas = true
|
||||
|
||||
[node name="Shadow" type="Decal" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.9, 0)
|
||||
size = Vector3(1, 2, 1)
|
||||
texture_albedo = ExtResource("2_b0fo8")
|
||||
modulate = Color(1, 1, 1, 0.705882)
|
||||
normal_fade = 0.5
|
||||
|
||||
[node name="SoundFootsteps" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource("5_ics1s")
|
||||
volume_db = -5.0
|
||||
autoplay = true
|
||||
|
||||
[node name="BlasterCooldown" type="Timer" parent="."]
|
||||
one_shot = true
|
||||
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cpxour8a7ihec"
|
||||
path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://icon.png"
|
||||
dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
|
After Width: | Height: | Size: 9.2 KiB |
@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://b5hxnjwvrxuji"
|
||||
path.bptc="res://.godot/imported/colormap.png-c1bc3c3aabeec406ff4b53328583776a.bptc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://models/Textures/colormap.png"
|
||||
dest_files=["res://.godot/imported/colormap.png-c1bc3c3aabeec406ff4b53328583776a.bptc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=true
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
||||
@ -0,0 +1,32 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://c0fgu1f2whait"
|
||||
path="res://.godot/imported/blaster-double.glb-432c9163e28f0aae29c58d0e5ca6594b.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://models/blaster-double.glb"
|
||||
dest_files=["res://.godot/imported/blaster-double.glb-432c9163e28f0aae29c58d0e5ca6594b.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type="Node3D"
|
||||
nodes/root_name="Scene Root"
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
meshes/ensure_tangents=true
|
||||
meshes/generate_lods=true
|
||||
meshes/create_shadow_meshes=true
|
||||
meshes/light_baking=1
|
||||
meshes/lightmap_texel_size=0.2
|
||||
skins/use_named_skins=true
|
||||
animation/import=true
|
||||
animation/fps=30
|
||||
animation/trimming=false
|
||||
animation/remove_immutable_tracks=true
|
||||
import_script/path=""
|
||||
_subresources={}
|
||||
gltf/embedded_image_handling=1
|
||||
@ -0,0 +1,32 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://b2p7bbkuxf7m"
|
||||
path="res://.godot/imported/blaster.glb-865d95bc6d15a20a70b45829eaeb4dc5.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://models/blaster.glb"
|
||||
dest_files=["res://.godot/imported/blaster.glb-865d95bc6d15a20a70b45829eaeb4dc5.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type="Node3D"
|
||||
nodes/root_name="Scene Root"
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
meshes/ensure_tangents=true
|
||||
meshes/generate_lods=true
|
||||
meshes/create_shadow_meshes=true
|
||||
meshes/light_baking=1
|
||||
meshes/lightmap_texel_size=0.2
|
||||
skins/use_named_skins=true
|
||||
animation/import=true
|
||||
animation/fps=30
|
||||
animation/trimming=false
|
||||
animation/remove_immutable_tracks=true
|
||||
import_script/path=""
|
||||
_subresources={}
|
||||
gltf/embedded_image_handling=1
|
||||
@ -0,0 +1,32 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://lde2xq3vq635"
|
||||
path="res://.godot/imported/enemy-flying.glb-6120572f403485a0abe68ce33d56638b.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://models/enemy-flying.glb"
|
||||
dest_files=["res://.godot/imported/enemy-flying.glb-6120572f403485a0abe68ce33d56638b.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type="Node3D"
|
||||
nodes/root_name="Scene Root"
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
meshes/ensure_tangents=true
|
||||
meshes/generate_lods=true
|
||||
meshes/create_shadow_meshes=true
|
||||
meshes/light_baking=1
|
||||
meshes/lightmap_texel_size=0.2
|
||||
skins/use_named_skins=true
|
||||
animation/import=true
|
||||
animation/fps=30
|
||||
animation/trimming=false
|
||||
animation/remove_immutable_tracks=true
|
||||
import_script/path=""
|
||||
_subresources={}
|
||||
gltf/embedded_image_handling=1
|
||||
@ -0,0 +1,32 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://das5fosq6auoe"
|
||||
path="res://.godot/imported/grass-small.glb-0be1c06405ef2ce478dc00acb5be5be8.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://models/grass-small.glb"
|
||||
dest_files=["res://.godot/imported/grass-small.glb-0be1c06405ef2ce478dc00acb5be5be8.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type="Node3D"
|
||||
nodes/root_name="Scene Root"
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
meshes/ensure_tangents=true
|
||||
meshes/generate_lods=true
|
||||
meshes/create_shadow_meshes=true
|
||||
meshes/light_baking=1
|
||||
meshes/lightmap_texel_size=0.2
|
||||
skins/use_named_skins=true
|
||||
animation/import=true
|
||||
animation/fps=30
|
||||
animation/trimming=false
|
||||
animation/remove_immutable_tracks=true
|
||||
import_script/path=""
|
||||
_subresources={}
|
||||
gltf/embedded_image_handling=1
|
||||
@ -0,0 +1,32 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://beaer7x07yif6"
|
||||
path="res://.godot/imported/grass.glb-0ce858eae1c69c894a569863f13e24f1.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://models/grass.glb"
|
||||
dest_files=["res://.godot/imported/grass.glb-0ce858eae1c69c894a569863f13e24f1.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type="Node3D"
|
||||
nodes/root_name="Scene Root"
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
meshes/ensure_tangents=true
|
||||
meshes/generate_lods=true
|
||||
meshes/create_shadow_meshes=true
|
||||
meshes/light_baking=1
|
||||
meshes/lightmap_texel_size=0.2
|
||||
skins/use_named_skins=true
|
||||
animation/import=true
|
||||
animation/fps=30
|
||||
animation/trimming=false
|
||||
animation/remove_immutable_tracks=true
|
||||
import_script/path=""
|
||||
_subresources={}
|
||||
gltf/embedded_image_handling=1
|
||||
@ -0,0 +1,32 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://k065rxqtim8f"
|
||||
path="res://.godot/imported/platform-large-grass.glb-eba1099445789c9c9ba0b37fc57bd13f.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://models/platform-large-grass.glb"
|
||||
dest_files=["res://.godot/imported/platform-large-grass.glb-eba1099445789c9c9ba0b37fc57bd13f.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type="Node3D"
|
||||
nodes/root_name="Scene Root"
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
meshes/ensure_tangents=true
|
||||
meshes/generate_lods=true
|
||||
meshes/create_shadow_meshes=true
|
||||
meshes/light_baking=1
|
||||
meshes/lightmap_texel_size=0.2
|
||||
skins/use_named_skins=true
|
||||
animation/import=true
|
||||
animation/fps=30
|
||||
animation/trimming=false
|
||||
animation/remove_immutable_tracks=true
|
||||
import_script/path=""
|
||||
_subresources={}
|
||||
gltf/embedded_image_handling=1
|
||||
@ -0,0 +1,32 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://dwvcy6wtanoyy"
|
||||
path="res://.godot/imported/platform.glb-3476c7cd272116fb58fd5d0a0eddb703.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://models/platform.glb"
|
||||
dest_files=["res://.godot/imported/platform.glb-3476c7cd272116fb58fd5d0a0eddb703.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type="Node3D"
|
||||
nodes/root_name="Scene Root"
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
meshes/ensure_tangents=true
|
||||
meshes/generate_lods=true
|
||||
meshes/create_shadow_meshes=true
|
||||
meshes/light_baking=1
|
||||
meshes/lightmap_texel_size=0.2
|
||||
skins/use_named_skins=true
|
||||
animation/import=true
|
||||
animation/fps=30
|
||||
animation/trimming=false
|
||||
animation/remove_immutable_tracks=true
|
||||
import_script/path=""
|
||||
_subresources={}
|
||||
gltf/embedded_image_handling=1
|
||||
@ -0,0 +1,32 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://c743irj356lax"
|
||||
path="res://.godot/imported/wall-high.glb-74f2e81af43ef5254fe14637810326a5.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://models/wall-high.glb"
|
||||
dest_files=["res://.godot/imported/wall-high.glb-74f2e81af43ef5254fe14637810326a5.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type="Node3D"
|
||||
nodes/root_name="Scene Root"
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
meshes/ensure_tangents=true
|
||||
meshes/generate_lods=true
|
||||
meshes/create_shadow_meshes=true
|
||||
meshes/light_baking=1
|
||||
meshes/lightmap_texel_size=0.2
|
||||
skins/use_named_skins=true
|
||||
animation/import=true
|
||||
animation/fps=30
|
||||
animation/trimming=false
|
||||
animation/remove_immutable_tracks=true
|
||||
import_script/path=""
|
||||
_subresources={}
|
||||
gltf/embedded_image_handling=1
|
||||
@ -0,0 +1,32 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://x08pt5dvke58"
|
||||
path="res://.godot/imported/wall-low.glb-de080c69f0eef8b51181d363ed18f581.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://models/wall-low.glb"
|
||||
dest_files=["res://.godot/imported/wall-low.glb-de080c69f0eef8b51181d363ed18f581.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type="Node3D"
|
||||
nodes/root_name="Scene Root"
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
meshes/ensure_tangents=true
|
||||
meshes/generate_lods=true
|
||||
meshes/create_shadow_meshes=true
|
||||
meshes/light_baking=1
|
||||
meshes/lightmap_texel_size=0.2
|
||||
skins/use_named_skins=true
|
||||
animation/import=true
|
||||
animation/fps=30
|
||||
animation/trimming=false
|
||||
animation/remove_immutable_tracks=true
|
||||
import_script/path=""
|
||||
_subresources={}
|
||||
gltf/embedded_image_handling=1
|
||||
@ -0,0 +1,4 @@
|
||||
extends Node
|
||||
|
||||
func _on_animation_finished():
|
||||
queue_free()
|
||||
@ -0,0 +1,51 @@
|
||||
[gd_scene load_steps=8 format=3 uid="uid://b7070gfoko4mo"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://dh0t42ubhuv0" path="res://sprites/hit.png" id="1_mdfft"]
|
||||
[ext_resource type="Script" path="res://objects/impact.gd" id="2_k826h"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_8c04i"]
|
||||
atlas = ExtResource("1_mdfft")
|
||||
region = Rect2(0, 0, 128, 128)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_34j4g"]
|
||||
atlas = ExtResource("1_mdfft")
|
||||
region = Rect2(128, 0, 128, 128)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_tk4oq"]
|
||||
atlas = ExtResource("1_mdfft")
|
||||
region = Rect2(0, 128, 128, 128)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_q5m5l"]
|
||||
atlas = ExtResource("1_mdfft")
|
||||
region = Rect2(128, 128, 128, 128)
|
||||
|
||||
[sub_resource type="SpriteFrames" id="SpriteFrames_nwydm"]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_8c04i")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_34j4g")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_tk4oq")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_q5m5l")
|
||||
}],
|
||||
"loop": false,
|
||||
"name": &"shot",
|
||||
"speed": 30.0
|
||||
}]
|
||||
|
||||
[node name="AnimatedSprite3D" type="AnimatedSprite3D"]
|
||||
cast_shadow = 0
|
||||
pixel_size = 0.0025
|
||||
double_sided = false
|
||||
no_depth_test = true
|
||||
sprite_frames = SubResource("SpriteFrames_nwydm")
|
||||
animation = &"shot"
|
||||
script = ExtResource("2_k826h")
|
||||
|
||||
[connection signal="animation_finished" from="." to="." method="_on_animation_finished"]
|
||||
@ -0,0 +1,110 @@
|
||||
; Engine configuration file.
|
||||
; It's best edited using the editor UI and not directly,
|
||||
; since the parameters that go here are not all obvious.
|
||||
;
|
||||
; Format:
|
||||
; [section] ; section goes between []
|
||||
; param=value ; assign values to parameters
|
||||
|
||||
config_version=5
|
||||
|
||||
[application]
|
||||
|
||||
config/name="Starter Kit FPS"
|
||||
config/tags=PackedStringArray("starterkit")
|
||||
run/main_scene="res://scenes/main.tscn"
|
||||
config/features=PackedStringArray("4.1", "Forward Plus")
|
||||
boot_splash/bg_color=Color(0.92549, 0.92549, 0.960784, 1)
|
||||
boot_splash/image="res://splash-screen.png"
|
||||
config/icon="res://icon.png"
|
||||
|
||||
[autoload]
|
||||
|
||||
Audio="*res://scripts/audio.gd"
|
||||
|
||||
[display]
|
||||
|
||||
window/size/viewport_width=1280
|
||||
window/size/viewport_height=720
|
||||
|
||||
[input]
|
||||
|
||||
move_right={
|
||||
"deadzone": 0.25,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"echo":false,"script":null)
|
||||
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":1.0,"script":null)
|
||||
]
|
||||
}
|
||||
move_left={
|
||||
"deadzone": 0.25,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"echo":false,"script":null)
|
||||
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":-1.0,"script":null)
|
||||
]
|
||||
}
|
||||
move_forward={
|
||||
"deadzone": 0.25,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"echo":false,"script":null)
|
||||
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":-1.0,"script":null)
|
||||
]
|
||||
}
|
||||
move_back={
|
||||
"deadzone": 0.25,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"echo":false,"script":null)
|
||||
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":1.0,"script":null)
|
||||
]
|
||||
}
|
||||
jump={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"echo":false,"script":null)
|
||||
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":1,"pressure":0.0,"pressed":true,"script":null)
|
||||
]
|
||||
}
|
||||
camera_left={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194319,"key_label":0,"unicode":0,"echo":false,"script":null)
|
||||
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":2,"axis_value":-1.0,"script":null)
|
||||
]
|
||||
}
|
||||
camera_right={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194321,"key_label":0,"unicode":0,"echo":false,"script":null)
|
||||
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":2,"axis_value":1.0,"script":null)
|
||||
]
|
||||
}
|
||||
camera_up={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194320,"key_label":0,"unicode":0,"echo":false,"script":null)
|
||||
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":3,"axis_value":-1.0,"script":null)
|
||||
]
|
||||
}
|
||||
camera_down={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194322,"key_label":0,"unicode":0,"echo":false,"script":null)
|
||||
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":3,"axis_value":1.0,"script":null)
|
||||
]
|
||||
}
|
||||
mouse_capture={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":1,"canceled":false,"pressed":false,"double_click":false,"script":null)
|
||||
]
|
||||
}
|
||||
mouse_capture_exit={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
shoot={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(92, 12),"global_position":Vector2(96, 55),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null)
|
||||
]
|
||||
}
|
||||
weapon_next={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":101,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
|
||||
[rendering]
|
||||
|
||||
lights_and_shadows/directional_shadow/soft_shadow_filter_quality=5
|
||||
anti_aliasing/quality/msaa_3d=3
|
||||
@ -0,0 +1,28 @@
|
||||
[gd_resource type="Environment" load_steps=3 format=3 uid="uid://jvmpkdwaeaq"]
|
||||
|
||||
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_lg8b7"]
|
||||
sky_horizon_color = Color(0.67451, 0.682353, 0.698039, 1)
|
||||
sky_curve = 0.0175
|
||||
ground_bottom_color = Color(1, 1, 1, 1)
|
||||
ground_curve = 0.171484
|
||||
|
||||
[sub_resource type="Sky" id="Sky_7bk1c"]
|
||||
sky_material = SubResource("ProceduralSkyMaterial_lg8b7")
|
||||
|
||||
[resource]
|
||||
background_mode = 1
|
||||
background_color = Color(0.360784, 0.392157, 0.462745, 1)
|
||||
sky = SubResource("Sky_7bk1c")
|
||||
ambient_light_source = 2
|
||||
ambient_light_color = Color(0.662745, 0.694118, 0.772549, 1)
|
||||
ambient_light_energy = 1.15
|
||||
tonemap_mode = 2
|
||||
ssao_enabled = true
|
||||
ssao_radius = 0.45
|
||||
ssao_intensity = 1.0
|
||||
ssao_power = 5.0
|
||||
glow_enabled = true
|
||||
glow_levels/2 = 0.6
|
||||
glow_levels/3 = 0.6
|
||||
glow_levels/5 = 0.0
|
||||
glow_intensity = 2.0
|
||||
@ -0,0 +1,81 @@
|
||||
[gd_scene load_steps=8 format=3 uid="uid://dxvvlck8lej3f"]
|
||||
|
||||
[ext_resource type="Environment" uid="uid://jvmpkdwaeaq" path="res://scenes/main-environment.tres" id="1_q8fpv"]
|
||||
[ext_resource type="PackedScene" uid="uid://dl2ed4gkybggf" path="res://actors/player.tscn" id="2_elriq"]
|
||||
[ext_resource type="PackedScene" uid="uid://dpm3l05d7fu35" path="res://objects/platform.tscn" id="5_3s40e"]
|
||||
[ext_resource type="PackedScene" uid="uid://r7rt7pth4u7o" path="res://objects/wall_low.tscn" id="5_6vel1"]
|
||||
[ext_resource type="PackedScene" uid="uid://c71evdjblk5wp" path="res://objects/wall_high.tscn" id="7_cabne"]
|
||||
[ext_resource type="PackedScene" uid="uid://bvx5cvigosg0s" path="res://objects/platform_large_grass.tscn" id="7_wggef"]
|
||||
[ext_resource type="PackedScene" uid="uid://d2g78tpqbyf5g" path="res://actors/enemy.tscn" id="8_7ty2f"]
|
||||
|
||||
[node name="Main" type="Node3D"]
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||
environment = ExtResource("1_q8fpv")
|
||||
|
||||
[node name="Player" parent="." node_paths=PackedStringArray("crosshair") instance=ExtResource("2_elriq")]
|
||||
crosshair = NodePath("../Canvas/Crosshair")
|
||||
|
||||
[node name="Sun" type="DirectionalLight3D" parent="."]
|
||||
transform = Transform3D(-0.422618, -0.694272, 0.582563, 0, 0.642788, 0.766044, -0.906308, 0.323744, -0.271654, 0, 0, 0)
|
||||
shadow_enabled = true
|
||||
shadow_opacity = 0.75
|
||||
|
||||
[node name="Canvas" type="CanvasLayer" parent="."]
|
||||
|
||||
[node name="Crosshair" type="TextureRect" parent="Canvas"]
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -20.0
|
||||
offset_top = -20.0
|
||||
offset_right = 20.0
|
||||
offset_bottom = 20.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
scale = Vector2(0.35, 0.35)
|
||||
pivot_offset = Vector2(64, 64)
|
||||
|
||||
[node name="wall-low" parent="." instance=ExtResource("5_6vel1")]
|
||||
transform = Transform3D(0.965926, 0, 0.258819, 0, 1, 0, -0.258819, 0, 0.965926, -1.92088, 1.05, -6.90166)
|
||||
|
||||
[node name="wall-low3" parent="." instance=ExtResource("5_6vel1")]
|
||||
transform = Transform3D(-1, 0, -1.19209e-07, 0, 1, 0, 1.19209e-07, 0, -1, 6.07912, 1.05, 6.59834)
|
||||
|
||||
[node name="platform-falling" parent="." instance=ExtResource("5_3s40e")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.5, 0, 6.5)
|
||||
|
||||
[node name="platform-falling2" parent="." instance=ExtResource("5_3s40e")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.5, 2.5, -2.5)
|
||||
|
||||
[node name="platform-falling3" parent="." instance=ExtResource("5_3s40e")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 3, -3.5)
|
||||
|
||||
[node name="wall-high" parent="." instance=ExtResource("7_cabne")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 0, -1.5)
|
||||
|
||||
[node name="platform-large-grass" parent="." instance=ExtResource("7_wggef")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.5, 0)
|
||||
|
||||
[node name="platform-large-grass2" parent="." instance=ExtResource("7_wggef")]
|
||||
transform = Transform3D(0.965926, 0, 0.258819, 0, 1, 0, -0.258819, 0, 0.965926, -2, 0.5, -6)
|
||||
|
||||
[node name="platform-large-grass3" parent="." instance=ExtResource("7_wggef")]
|
||||
transform = Transform3D(0.965926, 0, -0.258819, 0, 1, 0, 0.258819, 0, 0.965926, -6, 1, 2.5)
|
||||
|
||||
[node name="platform-large-grass4" parent="." instance=ExtResource("7_wggef")]
|
||||
transform = Transform3D(0.965926, 0, 0.258819, 0, 1, 0, -0.258819, 0, 0.965926, 5, 0.5, 5.5)
|
||||
|
||||
[node name="enemy-flying" parent="." node_paths=PackedStringArray("player") instance=ExtResource("8_7ty2f")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.5, 2.5, -6)
|
||||
player = NodePath("../Player")
|
||||
|
||||
[node name="enemy-flying2" parent="." node_paths=PackedStringArray("player") instance=ExtResource("8_7ty2f")]
|
||||
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -9.5, 2.5, 1.5)
|
||||
player = NodePath("../Player")
|
||||
|
||||
[node name="enemy-flying3" parent="." node_paths=PackedStringArray("player") instance=ExtResource("8_7ty2f")]
|
||||
transform = Transform3D(-0.707107, 0, -0.707107, 0, 1, 0, 0.707107, 0, -0.707107, 5.5, 3.5, 9)
|
||||
player = NodePath("../Player")
|
||||
@ -0,0 +1,43 @@
|
||||
extends Node
|
||||
|
||||
# Code adapted from KidsCanCode
|
||||
|
||||
var num_players = 12
|
||||
var bus = "master"
|
||||
|
||||
var available = [] # The available players.
|
||||
var queue = [] # The queue of sounds to play.
|
||||
|
||||
func _ready():
|
||||
|
||||
for i in num_players:
|
||||
var p = AudioStreamPlayer.new()
|
||||
add_child(p)
|
||||
|
||||
available.append(p)
|
||||
|
||||
p.volume_db = -10
|
||||
p.finished.connect(_on_stream_finished.bind(p))
|
||||
p.bus = bus
|
||||
|
||||
|
||||
func _on_stream_finished(stream):
|
||||
available.append(stream)
|
||||
|
||||
func play(sound_path): # Path
|
||||
queue.append("res://" + sound_path)
|
||||
|
||||
func play_random(sound_paths): # Multiple paths, separate by commas
|
||||
var sounds = sound_paths.split(",")
|
||||
|
||||
play(sounds[randi() % sounds.size()].strip_edges())
|
||||
|
||||
func _process(_delta):
|
||||
|
||||
if not queue.is_empty() and not available.is_empty():
|
||||
|
||||
available[0].stream = load(queue.pop_front())
|
||||
available[0].play()
|
||||
available[0].pitch_scale = randf_range(0.9, 1.1)
|
||||
|
||||
available.pop_front()
|
||||
@ -0,0 +1,58 @@
|
||||
extends Node3D
|
||||
|
||||
@export var player:Node3D
|
||||
|
||||
@onready var raycast = $RayCast
|
||||
@onready var burst_a = $BurstA
|
||||
@onready var burst_b = $BurstB
|
||||
|
||||
var health := 100
|
||||
var target_position:Vector3
|
||||
var time := 0.0
|
||||
var destroyed := false
|
||||
|
||||
func _ready():
|
||||
target_position = position
|
||||
|
||||
func _process(delta):
|
||||
self.look_at(player.position + Vector3(0, 0.5, 0), Vector3.UP, true)
|
||||
|
||||
target_position.y += (cos(time * 5) * 1) * delta # Sine movement
|
||||
|
||||
time += delta
|
||||
|
||||
position = target_position
|
||||
|
||||
func damage(amount):
|
||||
health -= amount
|
||||
Audio.play("sounds/enemy_hurt.ogg")
|
||||
if health <= 0 and !destroyed:
|
||||
destroy()
|
||||
|
||||
func destroy():
|
||||
destroyed = true
|
||||
Audio.play("sounds/enemy_destroy.ogg")
|
||||
queue_free()
|
||||
|
||||
|
||||
func _on_timer_timeout():
|
||||
shoot()
|
||||
|
||||
func shoot():
|
||||
raycast.force_raycast_update()
|
||||
|
||||
if raycast.is_colliding():
|
||||
|
||||
var collider = raycast.get_collider()
|
||||
|
||||
if collider.has_method("get_hurt"):
|
||||
|
||||
burst_a.frame = 0
|
||||
burst_a.play("default")
|
||||
burst_a.rotation_degrees.z = randf_range(-45, 45)
|
||||
|
||||
burst_b.frame = 0
|
||||
burst_b.play("default")
|
||||
burst_b.rotation_degrees.z = randf_range(-45, 45)
|
||||
|
||||
Audio.play("sounds/enemy_attack.ogg")
|
||||
@ -0,0 +1,20 @@
|
||||
extends Resource
|
||||
class_name Weapon
|
||||
|
||||
@export_subgroup("Model")
|
||||
@export var model:PackedScene
|
||||
@export var position:Vector3
|
||||
@export var rotation:Vector3
|
||||
|
||||
@export_subgroup("Properties")
|
||||
@export_range(0.1, 1) var cooldown: float = 0.1
|
||||
@export_range(1, 20) var max_distance: int = 10
|
||||
@export_range(0, 100) var damage: float = 25
|
||||
@export_range(0, 5) var spread: float = 0
|
||||
@export_range(1, 5) var shot_count: int = 1
|
||||
|
||||
@export_subgroup("Sounds")
|
||||
@export var sound_shoot: String
|
||||
|
||||
@export_subgroup("Crosshair")
|
||||
@export var crosshair: Texture2D
|
||||
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://dv8rfe827xc6j"
|
||||
path="res://.godot/imported/blaster.ogg-1527ec84d518b60bb9fbaad97656d870.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://sounds/blaster.ogg"
|
||||
dest_files=["res://.godot/imported/blaster.ogg-1527ec84d518b60bb9fbaad97656d870.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://cmc2ufr6o30gl"
|
||||
path="res://.godot/imported/blaster_change.ogg-27f755a5dfe4b513b0b5bc81eb113dc3.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://sounds/blaster_change.ogg"
|
||||
dest_files=["res://.godot/imported/blaster_change.ogg-27f755a5dfe4b513b0b5bc81eb113dc3.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://blxqudiclpq84"
|
||||
path="res://.godot/imported/enemy_attack.ogg-ad3c73e6e91698e3fc81bd6423d8fca2.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://sounds/enemy_attack.ogg"
|
||||
dest_files=["res://.godot/imported/enemy_attack.ogg-ad3c73e6e91698e3fc81bd6423d8fca2.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://br1ov3ld0er6r"
|
||||
path="res://.godot/imported/enemy_destroy.ogg-feb8f111abab93d5fc30ec838c975232.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://sounds/enemy_destroy.ogg"
|
||||
dest_files=["res://.godot/imported/enemy_destroy.ogg-feb8f111abab93d5fc30ec838c975232.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://cgnbyrnxj12ed"
|
||||
path="res://.godot/imported/enemy_hurt.ogg-64e07bfa21b7ae57b8a0bf7357a95008.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://sounds/enemy_hurt.ogg"
|
||||
dest_files=["res://.godot/imported/enemy_hurt.ogg-64e07bfa21b7ae57b8a0bf7357a95008.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://x0s0tunvo0br"
|
||||
path="res://.godot/imported/jump-realistic.ogg-0655f517427ef61af899d7c5ae700ab6.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://sounds/jump-realistic.ogg"
|
||||
dest_files=["res://.godot/imported/jump-realistic.ogg-0655f517427ef61af899d7c5ae700ab6.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://dw2m5fxhfjykq"
|
||||
path="res://.godot/imported/jump.ogg-de8df8640ff526968292c23fe5ec784f.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://sounds/jump.ogg"
|
||||
dest_files=["res://.godot/imported/jump.ogg-de8df8640ff526968292c23fe5ec784f.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://bvnum0u73y8sv"
|
||||
path="res://.godot/imported/jump_a.ogg-df3a87b422b8537163b811137ab76d0c.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://sounds/jump_a.ogg"
|
||||
dest_files=["res://.godot/imported/jump_a.ogg-df3a87b422b8537163b811137ab76d0c.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://5raj3p7xaecq"
|
||||
path="res://.godot/imported/jump_b.ogg-f0989d7351debef348a67b21be8b7bd0.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://sounds/jump_b.ogg"
|
||||
dest_files=["res://.godot/imported/jump_b.ogg-f0989d7351debef348a67b21be8b7bd0.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://7tnsakv8pwa5"
|
||||
path="res://.godot/imported/jump_c.ogg-6a4808f519ad4af845e78fe92b3da78c.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://sounds/jump_c.ogg"
|
||||
dest_files=["res://.godot/imported/jump_c.ogg-6a4808f519ad4af845e78fe92b3da78c.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://xnxidwkp46un"
|
||||
path="res://.godot/imported/land.ogg-7222ba872273a4a7535937ef5cfdffd0.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://sounds/land.ogg"
|
||||
dest_files=["res://.godot/imported/land.ogg-7222ba872273a4a7535937ef5cfdffd0.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://br6iq2h671ery"
|
||||
path="res://.godot/imported/shoot_a.ogg-527bbcaa6ffabc0e8a7820780cfc3b2c.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://sounds/shoot_a.ogg"
|
||||
dest_files=["res://.godot/imported/shoot_a.ogg-527bbcaa6ffabc0e8a7820780cfc3b2c.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://cheg0i1wf285t"
|
||||
path="res://.godot/imported/shoot_b.ogg-3fea18996921e1ae1337cf584b325ddc.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://sounds/shoot_b.ogg"
|
||||
dest_files=["res://.godot/imported/shoot_b.ogg-3fea18996921e1ae1337cf584b325ddc.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://k40c314uiym2"
|
||||
path="res://.godot/imported/shoot_c.ogg-a309ac00957e32b88ef2a57e4294a4f4.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://sounds/shoot_c.ogg"
|
||||
dest_files=["res://.godot/imported/shoot_c.ogg-a309ac00957e32b88ef2a57e4294a4f4.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://dcatai5q4k77k"
|
||||
path="res://.godot/imported/shoot_d.ogg-23fcf862043859225d1039fc76244edb.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://sounds/shoot_d.ogg"
|
||||
dest_files=["res://.godot/imported/shoot_d.ogg-23fcf862043859225d1039fc76244edb.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://b0su3bm77yrvr"
|
||||
path="res://.godot/imported/shoot_shotgun.ogg-b1cdcf7bc1f47b25f622a407aa93e4d7.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://sounds/shoot_shotgun.ogg"
|
||||
dest_files=["res://.godot/imported/shoot_shotgun.ogg-b1cdcf7bc1f47b25f622a407aa93e4d7.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
@ -0,0 +1,19 @@
|
||||
[remap]
|
||||
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://cydjn1ct3hps2"
|
||||
path="res://.godot/imported/walking.ogg-bf61e9916135189ff0d5c06a148b02ab.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://sounds/walking.ogg"
|
||||
dest_files=["res://.godot/imported/walking.ogg-bf61e9916135189ff0d5c06a148b02ab.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=true
|
||||
loop_offset=0.0
|
||||
bpm=0.0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
|
After Width: | Height: | Size: 56 KiB |
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://biff4dkpfqi47"
|
||||
path="res://.godot/imported/splash-screen.png-ae6c8b07e185ee8a074576008d9ccc5a.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://splash-screen.png"
|
||||
dest_files=["res://.godot/imported/splash-screen.png-ae6c8b07e185ee8a074576008d9ccc5a.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
|
After Width: | Height: | Size: 15 KiB |
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://8ggihh27mlrr"
|
||||
path="res://.godot/imported/blob_shadow.png-d19f4ffceb1d99dd3331acec2dc6d7df.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://sprites/blob_shadow.png"
|
||||
dest_files=["res://.godot/imported/blob_shadow.png-d19f4ffceb1d99dd3331acec2dc6d7df.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
|
After Width: | Height: | Size: 6.1 KiB |
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cbfhj0tswcksm"
|
||||
path="res://.godot/imported/burst.png-0ca3a873296b113f4396e0bdead4beff.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://sprites/burst.png"
|
||||
dest_files=["res://.godot/imported/burst.png-0ca3a873296b113f4396e0bdead4beff.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=1
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=false
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
||||
@ -0,0 +1,28 @@
|
||||
[gd_resource type="SpriteFrames" load_steps=4 format=3 uid="uid://dbv3sy5qjatnl"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://cbfhj0tswcksm" path="res://sprites/burst.png" id="1_bh1wj"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mdaww"]
|
||||
atlas = ExtResource("1_bh1wj")
|
||||
region = Rect2(0, 0, 256, 256)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_3nr3w"]
|
||||
atlas = ExtResource("1_bh1wj")
|
||||
region = Rect2(256, 0, 256, 256)
|
||||
|
||||
[resource]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_mdaww")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_3nr3w")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": null
|
||||
}],
|
||||
"loop": false,
|
||||
"name": &"default",
|
||||
"speed": 30.0
|
||||
}]
|
||||
|
After Width: | Height: | Size: 3.1 KiB |
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://ce3lgq7foiusl"
|
||||
path="res://.godot/imported/crosshair-repeater.png-ec408225e689b23875963003728cb016.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://sprites/crosshair-repeater.png"
|
||||
dest_files=["res://.godot/imported/crosshair-repeater.png-ec408225e689b23875963003728cb016.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
|
After Width: | Height: | Size: 3.4 KiB |
@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://2jld33y6h5pq"
|
||||
path.s3tc="res://.godot/imported/crosshair.png-1281ee32d6777347e0f43a202c603c1b.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://sprites/crosshair.png"
|
||||
dest_files=["res://.godot/imported/crosshair.png-1281ee32d6777347e0f43a202c603c1b.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
||||
|
After Width: | Height: | Size: 3.7 KiB |
@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dh0t42ubhuv0"
|
||||
path.s3tc="res://.godot/imported/hit.png-32857f07c817e04581303953f2545db0.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://sprites/hit.png"
|
||||
dest_files=["res://.godot/imported/hit.png-32857f07c817e04581303953f2545db0.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bs6puxrivhkk2"
|
||||
path.s3tc="res://.godot/imported/particle.png-9c8c1748211b697ea72e6a5d18d7f578.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://sprites/particle.png"
|
||||
dest_files=["res://.godot/imported/particle.png-9c8c1748211b697ea72e6a5d18d7f578.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
||||
|
After Width: | Height: | Size: 186 B |
@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://diluv5007my5w"
|
||||
path.s3tc="res://.godot/imported/tracer.png-e5030356ca26a83ff0fd1b2d5a878c23.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://sprites/tracer.png"
|
||||
dest_files=["res://.godot/imported/tracer.png-e5030356ca26a83ff0fd1b2d5a878c23.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
||||
@ -0,0 +1,18 @@
|
||||
[gd_resource type="Resource" script_class="Weapon" load_steps=4 format=3 uid="uid://cu2gtxlcmbb34"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://c0fgu1f2whait" path="res://models/blaster-double.glb" id="1_1mdln"]
|
||||
[ext_resource type="Texture2D" uid="uid://ce3lgq7foiusl" path="res://sprites/crosshair-repeater.png" id="1_hoqei"]
|
||||
[ext_resource type="Script" path="res://scripts/weapon.gd" id="1_l1atd"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_l1atd")
|
||||
model = ExtResource("1_1mdln")
|
||||
position = Vector3(0, 0, 0)
|
||||
rotation = Vector3(0, 180, 0)
|
||||
cooldown = 0.1
|
||||
max_distance = 10
|
||||
damage = 10.0
|
||||
spread = 0.5
|
||||
shot_count = 1
|
||||
sound_shoot = "sounds/shoot_a.ogg"
|
||||
crosshair = ExtResource("1_hoqei")
|
||||
@ -0,0 +1,18 @@
|
||||
[gd_resource type="Resource" script_class="Weapon" load_steps=4 format=3 uid="uid://c56y8pqoyk15f"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://2jld33y6h5pq" path="res://sprites/crosshair.png" id="1_2onsr"]
|
||||
[ext_resource type="PackedScene" uid="uid://b2p7bbkuxf7m" path="res://models/blaster.glb" id="1_x0glg"]
|
||||
[ext_resource type="Script" path="res://scripts/weapon.gd" id="2_107w7"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("2_107w7")
|
||||
model = ExtResource("1_x0glg")
|
||||
position = Vector3(0, 0, 0)
|
||||
rotation = Vector3(0, 180, 0)
|
||||
cooldown = 0.5
|
||||
max_distance = 10
|
||||
damage = 25.0
|
||||
spread = 2.0
|
||||
shot_count = 3
|
||||
sound_shoot = "sounds/shoot_shotgun.ogg"
|
||||
crosshair = ExtResource("1_2onsr")
|
||||