added machinegun turret
This commit is contained in:
parent
a85b68a317
commit
5f6968a7e9
11 changed files with 567 additions and 2 deletions
Binary file not shown.
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 12 KiB |
35
global_palette.png.import
Normal file
35
global_palette.png.import
Normal file
|
@ -0,0 +1,35 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/global_palette.png-4d8657b6a2eb8f3c7d2053c783dbb9f2.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://global_palette.png"
|
||||
dest_files=[ "res://.import/global_palette.png-4d8657b6a2eb8f3c7d2053c783dbb9f2.stex" ]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_mode=0
|
||||
compress/bptc_ldr=0
|
||||
compress/normal_map=0
|
||||
flags/repeat=0
|
||||
flags/filter=false
|
||||
flags/mipmaps=false
|
||||
flags/anisotropic=false
|
||||
flags/srgb=2
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/HDR_as_SRGB=false
|
||||
process/invert_color=false
|
||||
process/normal_map_invert_y=false
|
||||
stream=false
|
||||
size_limit=0
|
||||
detect_3d=true
|
||||
svg/scale=1.0
|
BIN
graphics/enemy/turret.png
Normal file
BIN
graphics/enemy/turret.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 13 KiB |
35
graphics/enemy/turret.png.import
Normal file
35
graphics/enemy/turret.png.import
Normal file
|
@ -0,0 +1,35 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/turret.png-b97c44f424c4d5ba2402da57f8a698f0.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://graphics/enemy/turret.png"
|
||||
dest_files=[ "res://.import/turret.png-b97c44f424c4d5ba2402da57f8a698f0.stex" ]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_mode=0
|
||||
compress/bptc_ldr=0
|
||||
compress/normal_map=0
|
||||
flags/repeat=0
|
||||
flags/filter=false
|
||||
flags/mipmaps=false
|
||||
flags/anisotropic=false
|
||||
flags/srgb=2
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/HDR_as_SRGB=false
|
||||
process/invert_color=false
|
||||
process/normal_map_invert_y=false
|
||||
stream=false
|
||||
size_limit=0
|
||||
detect_3d=true
|
||||
svg/scale=1.0
|
BIN
graphics/particles/pixel.png
Normal file
BIN
graphics/particles/pixel.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 546 B |
35
graphics/particles/pixel.png.import
Normal file
35
graphics/particles/pixel.png.import
Normal file
|
@ -0,0 +1,35 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/pixel.png-ea8731a4a8becbfe71ee1a01d140f7c0.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://graphics/particles/pixel.png"
|
||||
dest_files=[ "res://.import/pixel.png-ea8731a4a8becbfe71ee1a01d140f7c0.stex" ]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_mode=0
|
||||
compress/bptc_ldr=0
|
||||
compress/normal_map=0
|
||||
flags/repeat=0
|
||||
flags/filter=false
|
||||
flags/mipmaps=false
|
||||
flags/anisotropic=false
|
||||
flags/srgb=2
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/HDR_as_SRGB=false
|
||||
process/invert_color=false
|
||||
process/normal_map_invert_y=false
|
||||
stream=false
|
||||
size_limit=0
|
||||
detect_3d=true
|
||||
svg/scale=1.0
|
|
@ -1,4 +1,4 @@
|
|||
[gd_scene load_steps=14 format=2]
|
||||
[gd_scene load_steps=15 format=2]
|
||||
|
||||
[ext_resource path="res://maps/map.gd" type="Script" id=1]
|
||||
[ext_resource path="res://objects/Camera2D.tscn" type="PackedScene" id=2]
|
||||
|
@ -9,6 +9,7 @@
|
|||
[ext_resource path="res://scripts/recolor_border.shader" type="Shader" id=7]
|
||||
[ext_resource path="res://graphics/player/sg_doublejump.png" type="Texture" id=8]
|
||||
[ext_resource path="res://objects/environment/ladder/ladder.tscn" type="PackedScene" id=9]
|
||||
[ext_resource path="res://objects/environment/turret/turret.tscn" type="PackedScene" id=10]
|
||||
|
||||
[sub_resource type="ShaderMaterial" id=1]
|
||||
shader = ExtResource( 7 )
|
||||
|
@ -112,7 +113,7 @@ tracks/1/keys = {
|
|||
"values": [ 0.0, 90.0, 180.0, 270.0 ]
|
||||
}
|
||||
|
||||
[node name="Map" type="Node2D"]
|
||||
[node name="Map" type="Node2D" groups=["map"]]
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="Sectors" type="CanvasLayer" parent="."]
|
||||
|
@ -195,4 +196,7 @@ tile_data = PoolIntArray( 1114119, 0, 131072, 1179655, 0, 131072, 1245191, 0, 13
|
|||
position = Vector2( 56, 136 )
|
||||
scale = Vector2( 1, 3 )
|
||||
|
||||
[node name="Turret" parent="." instance=ExtResource( 10 )]
|
||||
position = Vector2( 96, 72 )
|
||||
|
||||
[connection signal="tree_entered" from="Sectors" to="Sectors" method="set_visible" binds= [ false ]]
|
||||
|
|
38
objects/environment/turret/turret.gd
Normal file
38
objects/environment/turret/turret.gd
Normal file
|
@ -0,0 +1,38 @@
|
|||
extends Node2D
|
||||
|
||||
const TurretBullet = preload("res://objects/environment/turret/turret_bullet.tscn")
|
||||
|
||||
export var delay = 0.0
|
||||
export var fire_rate = 10.0
|
||||
export var bullet_spread = 15.0
|
||||
export var bullet_speed = 200.0
|
||||
|
||||
# do not set manually, controlled by AnimationPlayer
|
||||
export var shooting = false
|
||||
|
||||
onready var barrel_start = $BarrelStart
|
||||
onready var barrel_end = $BarrelStart/BarrelEnd
|
||||
|
||||
var bullet_cooldown = 1.0
|
||||
|
||||
func _ready():
|
||||
bullet_spread = deg2rad(bullet_spread)
|
||||
$AnimationTree.active = true
|
||||
var timer = get_tree().create_timer(delay, false)
|
||||
timer.connect("timeout", $AnimationTree, "set", [
|
||||
"parameters/conditions/shooting",
|
||||
true
|
||||
])
|
||||
|
||||
func _physics_process(delta):
|
||||
if shooting:
|
||||
bullet_cooldown -= delta * fire_rate
|
||||
if bullet_cooldown <= 0.0:
|
||||
bullet_cooldown += 1.0
|
||||
var bullet = TurretBullet.instance()
|
||||
bullet.global_position = barrel_end.global_position
|
||||
bullet.direction = (barrel_end.global_position - barrel_start.global_position).normalized()
|
||||
bullet.direction = bullet.direction.rotated(rand_range(-bullet_spread, bullet_spread))
|
||||
bullet.speed = bullet_speed
|
||||
get_parent().call_deferred("add_child", bullet)
|
||||
Game.play_sound(Game.a_arrow, Game.ac_climb)
|
374
objects/environment/turret/turret.tscn
Normal file
374
objects/environment/turret/turret.tscn
Normal file
|
@ -0,0 +1,374 @@
|
|||
[gd_scene load_steps=21 format=2]
|
||||
|
||||
[ext_resource path="res://objects/environment/turret/turret.gd" type="Script" id=1]
|
||||
[ext_resource path="res://graphics/enemy/turret.png" type="Texture" id=2]
|
||||
[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=3]
|
||||
|
||||
[sub_resource type="Animation" id=1]
|
||||
length = 0.001
|
||||
loop = true
|
||||
tracks/0/type = "value"
|
||||
tracks/0/path = NodePath("Sprite:frame")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/keys = {
|
||||
"times": PoolRealArray( 0 ),
|
||||
"transitions": PoolRealArray( 1 ),
|
||||
"update": 0,
|
||||
"values": [ 0 ]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/path = NodePath("Sprite:flip_h")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/keys = {
|
||||
"times": PoolRealArray( 0 ),
|
||||
"transitions": PoolRealArray( 1 ),
|
||||
"update": 0,
|
||||
"values": [ false ]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/path = NodePath("BarrelStart:rotation_degrees")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/keys = {
|
||||
"times": PoolRealArray( 0 ),
|
||||
"transitions": PoolRealArray( 1 ),
|
||||
"update": 0,
|
||||
"values": [ 0.0 ]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/path = NodePath("BarrelStart/BarrelEnd/MuzzleFlash:emitting")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/keys = {
|
||||
"times": PoolRealArray( 0 ),
|
||||
"transitions": PoolRealArray( 1 ),
|
||||
"update": 1,
|
||||
"values": [ false ]
|
||||
}
|
||||
tracks/4/type = "value"
|
||||
tracks/4/path = NodePath(".:shooting")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/imported = false
|
||||
tracks/4/enabled = true
|
||||
tracks/4/keys = {
|
||||
"times": PoolRealArray( 0 ),
|
||||
"transitions": PoolRealArray( 1 ),
|
||||
"update": 0,
|
||||
"values": [ false ]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id=2]
|
||||
resource_name = "cool_down"
|
||||
length = 4.0
|
||||
tracks/0/type = "value"
|
||||
tracks/0/path = NodePath("Sprite:frame")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/keys = {
|
||||
"times": PoolRealArray( 0, 0.5, 1, 2, 3 ),
|
||||
"transitions": PoolRealArray( 1, 1, 1, 1, 1 ),
|
||||
"update": 1,
|
||||
"values": [ 8, 7, 6, 3, 0 ]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/path = NodePath("Sprite:flip_h")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/keys = {
|
||||
"times": PoolRealArray( 0 ),
|
||||
"transitions": PoolRealArray( 1 ),
|
||||
"update": 1,
|
||||
"values": [ false ]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/path = NodePath("BarrelStart:rotation_degrees")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/keys = {
|
||||
"times": PoolRealArray( 0, 1 ),
|
||||
"transitions": PoolRealArray( 1, 1 ),
|
||||
"update": 0,
|
||||
"values": [ 45.0, 0.0 ]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/path = NodePath("BarrelStart/BarrelEnd/MuzzleFlash:emitting")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/keys = {
|
||||
"times": PoolRealArray( 0 ),
|
||||
"transitions": PoolRealArray( 1 ),
|
||||
"update": 1,
|
||||
"values": [ false ]
|
||||
}
|
||||
tracks/4/type = "value"
|
||||
tracks/4/path = NodePath(".:shooting")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/imported = false
|
||||
tracks/4/enabled = true
|
||||
tracks/4/keys = {
|
||||
"times": PoolRealArray( 0 ),
|
||||
"transitions": PoolRealArray( 1 ),
|
||||
"update": 1,
|
||||
"values": [ false ]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id=3]
|
||||
resource_name = "prime"
|
||||
length = 3.0
|
||||
tracks/0/type = "value"
|
||||
tracks/0/path = NodePath("Sprite:frame")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/keys = {
|
||||
"times": PoolRealArray( 0, 1, 2 ),
|
||||
"transitions": PoolRealArray( 1, 1, 1 ),
|
||||
"update": 1,
|
||||
"values": [ 0, 1, 2 ]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/path = NodePath("Sprite:flip_h")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/keys = {
|
||||
"times": PoolRealArray( 0 ),
|
||||
"transitions": PoolRealArray( 1 ),
|
||||
"update": 1,
|
||||
"values": [ false ]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/path = NodePath("BarrelStart:rotation_degrees")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/keys = {
|
||||
"times": PoolRealArray( 0, 2 ),
|
||||
"transitions": PoolRealArray( 1, 1 ),
|
||||
"update": 0,
|
||||
"values": [ 0.0, 45.0 ]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/path = NodePath("BarrelStart/BarrelEnd/MuzzleFlash:emitting")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/keys = {
|
||||
"times": PoolRealArray( 0 ),
|
||||
"transitions": PoolRealArray( 1 ),
|
||||
"update": 1,
|
||||
"values": [ false ]
|
||||
}
|
||||
tracks/4/type = "value"
|
||||
tracks/4/path = NodePath(".:shooting")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/imported = false
|
||||
tracks/4/enabled = true
|
||||
tracks/4/keys = {
|
||||
"times": PoolRealArray( 0 ),
|
||||
"transitions": PoolRealArray( 1 ),
|
||||
"update": 1,
|
||||
"values": [ false ]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id=4]
|
||||
resource_name = "shooting"
|
||||
length = 6.0
|
||||
tracks/0/type = "value"
|
||||
tracks/0/path = NodePath("Sprite:frame")
|
||||
tracks/0/interp = 0
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/keys = {
|
||||
"times": PoolRealArray( 0, 0.2, 0.4, 0.6, 0.8, 1, 1.2, 1.4, 1.6, 1.8, 1.9, 2, 2.2, 2.4, 2.6, 2.8, 3, 3.2, 3.4, 3.6, 3.8, 3.9, 4, 4.2, 4.4, 4.6, 4.8, 5, 5.2, 5.4, 5.6, 5.8, 6 ),
|
||||
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ),
|
||||
"update": 1,
|
||||
"values": [ 2, 1, 0, 1, 2, 2, 1, 0, 1, 2, 5, 5, 4, 3, 4, 5, 5, 4, 3, 4, 5, 8, 8, 7, 6, 7, 8, 8, 7, 6, 7, 8, 8 ]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/path = NodePath("Sprite:flip_h")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/keys = {
|
||||
"times": PoolRealArray( 0, 0.6, 1.4, 2.6, 3.4, 4.6, 5.4 ),
|
||||
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1 ),
|
||||
"update": 1,
|
||||
"values": [ false, true, false, true, false, true, false ]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/path = NodePath("BarrelStart:rotation_degrees")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/keys = {
|
||||
"times": PoolRealArray( 0, 0.6, 1, 1.6, 2, 2.2, 2.6, 3, 3.6, 4, 4.2, 4.6, 5, 5.6, 6 ),
|
||||
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ),
|
||||
"update": 0,
|
||||
"values": [ 45.0, 0.0, -45.0, 0.0, 45.0, 45.0, 0.0, -45.0, 0.0, 45.0, 45.0, 0.0, -45.0, 0.0, 45.0 ]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/path = NodePath("BarrelStart/BarrelEnd/MuzzleFlash:emitting")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/keys = {
|
||||
"times": PoolRealArray( 0, 6 ),
|
||||
"transitions": PoolRealArray( 1, 1 ),
|
||||
"update": 1,
|
||||
"values": [ true, false ]
|
||||
}
|
||||
tracks/4/type = "value"
|
||||
tracks/4/path = NodePath(".:shooting")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/imported = false
|
||||
tracks/4/enabled = true
|
||||
tracks/4/keys = {
|
||||
"times": PoolRealArray( 0, 6 ),
|
||||
"transitions": PoolRealArray( 1, 1 ),
|
||||
"update": 1,
|
||||
"values": [ true, false ]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationNodeAnimation" id=13]
|
||||
animation = "RESET"
|
||||
|
||||
[sub_resource type="AnimationNodeAnimation" id=5]
|
||||
animation = "cool_down"
|
||||
|
||||
[sub_resource type="AnimationNodeAnimation" id=6]
|
||||
animation = "prime"
|
||||
|
||||
[sub_resource type="AnimationNodeAnimation" id=10]
|
||||
animation = "shooting"
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachineTransition" id=7]
|
||||
switch_mode = 2
|
||||
advance_condition = "shooting"
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachineTransition" id=11]
|
||||
switch_mode = 2
|
||||
auto_advance = true
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachineTransition" id=12]
|
||||
switch_mode = 2
|
||||
auto_advance = true
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachineTransition" id=14]
|
||||
switch_mode = 2
|
||||
advance_condition = "shooting"
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachine" id=8]
|
||||
states/RESET/node = SubResource( 13 )
|
||||
states/RESET/position = Vector2( -29, -147.556 )
|
||||
states/cool_down/node = SubResource( 5 )
|
||||
states/cool_down/position = Vector2( -450.333, -154.667 )
|
||||
states/prime/node = SubResource( 6 )
|
||||
states/prime/position = Vector2( -111.667, -57.3333 )
|
||||
states/shooting/node = SubResource( 10 )
|
||||
states/shooting/position = Vector2( -583.667, -17.3333 )
|
||||
transitions = [ "cool_down", "prime", SubResource( 7 ), "shooting", "cool_down", SubResource( 11 ), "prime", "shooting", SubResource( 12 ), "RESET", "prime", SubResource( 14 ) ]
|
||||
start_node = "RESET"
|
||||
graph_offset = Vector2( -880, -243 )
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachinePlayback" id=9]
|
||||
|
||||
[sub_resource type="Curve" id=15]
|
||||
_data = [ Vector2( 0, 1 ), 0.0, -2.23455, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ]
|
||||
|
||||
[sub_resource type="CurveTexture" id=16]
|
||||
width = 32
|
||||
curve = SubResource( 15 )
|
||||
|
||||
[sub_resource type="ParticlesMaterial" id=17]
|
||||
emission_shape = 2
|
||||
emission_box_extents = Vector3( 2, 0, 0 )
|
||||
flag_disable_z = true
|
||||
direction = Vector3( 0, 1, 0 )
|
||||
spread = 60.0
|
||||
gravity = Vector3( 0, 0, 0 )
|
||||
initial_velocity = 50.0
|
||||
orbit_velocity = 0.0
|
||||
orbit_velocity_random = 0.0
|
||||
angle = 720.0
|
||||
angle_random = 1.0
|
||||
scale = 0.25
|
||||
scale_random = 0.5
|
||||
scale_curve = SubResource( 16 )
|
||||
color = Color( 1, 0.968627, 0.431373, 1 )
|
||||
|
||||
[node name="Turret" type="Node2D"]
|
||||
script = ExtResource( 1 )
|
||||
fire_rate = 20.0
|
||||
bullet_spread = 20.0
|
||||
|
||||
[node name="Sprite" type="Sprite" parent="."]
|
||||
texture = ExtResource( 2 )
|
||||
centered = false
|
||||
offset = Vector2( -4, 0 )
|
||||
hframes = 3
|
||||
vframes = 3
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
playback_process_mode = 0
|
||||
anims/RESET = SubResource( 1 )
|
||||
anims/cool_down = SubResource( 2 )
|
||||
anims/prime = SubResource( 3 )
|
||||
anims/shooting = SubResource( 4 )
|
||||
|
||||
[node name="AnimationTree" type="AnimationTree" parent="."]
|
||||
tree_root = SubResource( 8 )
|
||||
anim_player = NodePath("../AnimationPlayer")
|
||||
process_mode = 0
|
||||
parameters/playback = SubResource( 9 )
|
||||
parameters/conditions/shooting = false
|
||||
|
||||
[node name="BarrelStart" type="Position2D" parent="."]
|
||||
position = Vector2( 4, 5 )
|
||||
__meta__ = {
|
||||
"_gizmo_extents_": 2.0
|
||||
}
|
||||
|
||||
[node name="BarrelEnd" type="Position2D" parent="BarrelStart"]
|
||||
position = Vector2( 0, 9 )
|
||||
__meta__ = {
|
||||
"_gizmo_extents_": 2.0
|
||||
}
|
||||
|
||||
[node name="MuzzleFlash" type="Particles2D" parent="BarrelStart/BarrelEnd"]
|
||||
z_index = -1
|
||||
emitting = false
|
||||
lifetime = 0.15
|
||||
explosiveness = 0.5
|
||||
process_material = SubResource( 17 )
|
||||
texture = ExtResource( 3 )
|
18
objects/environment/turret/turret_bullet.gd
Normal file
18
objects/environment/turret/turret_bullet.gd
Normal file
|
@ -0,0 +1,18 @@
|
|||
extends Node2D
|
||||
|
||||
export var speed = 100.0
|
||||
|
||||
var direction = Vector2.DOWN
|
||||
|
||||
func _physics_process(delta):
|
||||
position += direction * speed * delta
|
||||
|
||||
|
||||
func _on_Hitbox_area_entered(area):
|
||||
if area.is_in_group("player"):
|
||||
area.get_parent().die()
|
||||
|
||||
|
||||
func _on_Hitbox_body_entered(body):
|
||||
if body is TileMap or body is StaticBody2D:
|
||||
queue_free()
|
26
objects/environment/turret/turret_bullet.tscn
Normal file
26
objects/environment/turret/turret_bullet.tscn
Normal file
|
@ -0,0 +1,26 @@
|
|||
[gd_scene load_steps=4 format=2]
|
||||
|
||||
[ext_resource path="res://graphics/particles/pixel.png" type="Texture" id=1]
|
||||
[ext_resource path="res://objects/environment/turret/turret_bullet.gd" type="Script" id=2]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id=1]
|
||||
extents = Vector2( 0.5, 0.5 )
|
||||
|
||||
[node name="TurretBullet" type="Node2D"]
|
||||
script = ExtResource( 2 )
|
||||
speed = 200.0
|
||||
|
||||
[node name="Sprite" type="Sprite" parent="."]
|
||||
modulate = Color( 1, 0.894118, 0.4, 1 )
|
||||
texture = ExtResource( 1 )
|
||||
centered = false
|
||||
|
||||
[node name="Hitbox" type="Area2D" parent="."]
|
||||
collision_mask = 3
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"]
|
||||
position = Vector2( 0.5, 0.5 )
|
||||
shape = SubResource( 1 )
|
||||
|
||||
[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"]
|
||||
[connection signal="body_entered" from="Hitbox" to="." method="_on_Hitbox_body_entered"]
|
Loading…
Add table
Add a link
Reference in a new issue