add jumping spider
This commit is contained in:
parent
3e5f3a67b9
commit
e0c4bf6077
6 changed files with 195 additions and 17 deletions
33
objects/enemy/enemy_jump.gd
Normal file
33
objects/enemy/enemy_jump.gd
Normal file
|
@ -0,0 +1,33 @@
|
|||
extends "res://objects/enemy/enemy.gd"
|
||||
|
||||
export var left_boundary = 0
|
||||
export var right_boundary = 0
|
||||
export var speed = 50
|
||||
export var flip_sprite = true
|
||||
export var direction = 1
|
||||
onready var startpos = position
|
||||
|
||||
onready var anims = $AnimationPlayer
|
||||
onready var sprite = $Sprite
|
||||
|
||||
func _ready():
|
||||
anims.play("idle")
|
||||
|
||||
func _physics_process(delta):
|
||||
if anims.current_animation == "jump":
|
||||
#Move
|
||||
position.x += direction * (speed * delta)
|
||||
#Switch dir
|
||||
if position.x >= startpos.x + (right_boundary * 8):
|
||||
direction = -1
|
||||
if flip_sprite == true: sprite.scale.x = -1
|
||||
if position.x <= startpos.x + (-left_boundary * 8):
|
||||
direction = 1
|
||||
if flip_sprite == true: sprite.scale.x = 1
|
||||
|
||||
|
||||
func _on_AnimationPlayer_animation_finished(anim_name):
|
||||
if anim_name == "idle":
|
||||
anims.play("jump")
|
||||
else:
|
||||
anims.play("idle")
|
112
objects/enemy/jumping_spider.tscn
Normal file
112
objects/enemy/jumping_spider.tscn
Normal file
|
@ -0,0 +1,112 @@
|
|||
[gd_scene load_steps=6 format=2]
|
||||
|
||||
[ext_resource path="res://graphics/enemy/jumping_spider.png" type="Texture" id=1]
|
||||
[ext_resource path="res://objects/enemy/enemy_jump.gd" type="Script" id=2]
|
||||
|
||||
[sub_resource type="Animation" id=1]
|
||||
resource_name = "idle"
|
||||
length = 0.5
|
||||
step = 0.35
|
||||
tracks/0/type = "value"
|
||||
tracks/0/path = NodePath("Sprite:region_rect")
|
||||
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": [ Rect2( 0, 0, 13, 12 ) ]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/path = NodePath("Sprite:position")
|
||||
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": [ Vector2( 4, 2 ) ]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/path = NodePath("Hitbox:position")
|
||||
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": [ Vector2( 0, 0 ) ]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id=2]
|
||||
resource_name = "jump"
|
||||
length = 0.3
|
||||
step = 0.05
|
||||
tracks/0/type = "value"
|
||||
tracks/0/path = NodePath("Sprite:region_rect")
|
||||
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": [ Rect2( 13, 0, 13, 12 ) ]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/path = NodePath("Sprite:position")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/keys = {
|
||||
"times": PoolRealArray( 0, 0.15, 0.3 ),
|
||||
"transitions": PoolRealArray( 1, 1, 1 ),
|
||||
"update": 0,
|
||||
"values": [ Vector2( 4, -2 ), Vector2( 4, -16 ), Vector2( 4, -2 ) ]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/path = NodePath("Hitbox:position")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/keys = {
|
||||
"times": PoolRealArray( 0, 0.15, 0.3 ),
|
||||
"transitions": PoolRealArray( 1, 1, 1 ),
|
||||
"update": 0,
|
||||
"values": [ Vector2( 0, -4 ), Vector2( 0, -18 ), Vector2( 0, -4 ) ]
|
||||
}
|
||||
|
||||
[sub_resource type="RectangleShape2D" id=3]
|
||||
extents = Vector2( 4.5, 4 )
|
||||
|
||||
[node name="JumpingSpider" type="Node2D"]
|
||||
position = Vector2( 0, -4 )
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="Sprite" type="Sprite" parent="."]
|
||||
position = Vector2( 4, 2 )
|
||||
texture = ExtResource( 1 )
|
||||
region_enabled = true
|
||||
region_rect = Rect2( 0, 0, 13, 12 )
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
anims/idle = SubResource( 1 )
|
||||
anims/jump = SubResource( 2 )
|
||||
|
||||
[node name="Hitbox" type="Area2D" parent="."]
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"]
|
||||
position = Vector2( 3.5, 4 )
|
||||
shape = SubResource( 3 )
|
||||
|
||||
[connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_AnimationPlayer_animation_finished"]
|
||||
[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"]
|
|
@ -6,7 +6,10 @@ export var direction = 1.0
|
|||
onready var line = $Line2D
|
||||
onready var hitbox = $Hitbox
|
||||
|
||||
var floor_y = 0.0
|
||||
export var up_boundary = 0
|
||||
export var down_boundary = 0
|
||||
|
||||
#var floor_y = 0.0
|
||||
|
||||
func _ready():
|
||||
var raycast = $RayCast2D
|
||||
|
@ -19,7 +22,8 @@ func _ready():
|
|||
# detect floor
|
||||
raycast.cast_to = Vector2(0.0, 192.0)
|
||||
raycast.force_raycast_update()
|
||||
floor_y = to_local(raycast.get_collision_point()).y - 3
|
||||
#floor_y = to_local(raycast.get_collision_point()).y - 3
|
||||
down_boundary *= 8
|
||||
raycast.queue_free()
|
||||
|
||||
func _physics_process(delta):
|
||||
|
@ -27,8 +31,8 @@ func _physics_process(delta):
|
|||
if hitbox.position.y < 5.0:
|
||||
hitbox.position.y = 5.0
|
||||
direction = 1.0
|
||||
if hitbox.position.y > floor_y:
|
||||
hitbox.position.y = floor_y
|
||||
if hitbox.position.y > down_boundary:
|
||||
hitbox.position.y = down_boundary
|
||||
direction = -1.0
|
||||
line.points[1].y = hitbox.position.y
|
||||
death_blood_offset = hitbox.position
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue