forked from team-sg/hero-mark-2
tube transport! also 3-block jump marginally easier
This commit is contained in:
parent
4d13d2932c
commit
8c60bbf293
6 changed files with 101 additions and 123 deletions
|
@ -1,117 +1,17 @@
|
||||||
[gd_scene load_steps=15 format=2]
|
[gd_scene load_steps=11 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://maps/map.gd" type="Script" id=1]
|
[ext_resource path="res://maps/map.gd" type="Script" id=1]
|
||||||
[ext_resource path="res://objects/Camera2D.tscn" type="PackedScene" id=2]
|
[ext_resource path="res://objects/Camera2D.tscn" type="PackedScene" id=2]
|
||||||
[ext_resource path="res://graphics/backgrounds/factory.png" type="Texture" id=3]
|
[ext_resource path="res://graphics/backgrounds/factory.png" type="Texture" id=3]
|
||||||
[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=4]
|
[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=4]
|
||||||
[ext_resource path="res://tilesets/t_factory.tres" type="TileSet" id=5]
|
[ext_resource path="res://tilesets/t_factory.tres" type="TileSet" id=5]
|
||||||
[ext_resource path="res://graphics/player/pal_sword.png" type="Texture" id=6]
|
[ext_resource path="res://objects/environment/tube/tube_entrance.tscn" type="PackedScene" id=6]
|
||||||
[ext_resource path="res://scripts/recolor_border.shader" type="Shader" id=7]
|
[ext_resource path="res://objects/environment/tube/tube_exit.tscn" type="PackedScene" 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/ladder/ladder.tscn" type="PackedScene" id=9]
|
||||||
[ext_resource path="res://objects/environment/turret/turret.tscn" type="PackedScene" id=10]
|
[ext_resource path="res://objects/environment/turret/turret.tscn" type="PackedScene" id=10]
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id=1]
|
[sub_resource type="RectangleShape2D" id=5]
|
||||||
shader = ExtResource( 7 )
|
extents = Vector2( 8, 16 )
|
||||||
shader_param/border_color = Color( 0, 0, 0, 1 )
|
|
||||||
shader_param/border_corners = true
|
|
||||||
shader_param/palette = ExtResource( 6 )
|
|
||||||
|
|
||||||
[sub_resource type="GDScript" id=4]
|
|
||||||
script/source = "extends Sprite
|
|
||||||
|
|
||||||
var dir = 1.0
|
|
||||||
onready var po = position.x
|
|
||||||
|
|
||||||
func _physics_process(delta):
|
|
||||||
position.x += dir * 120.0 * delta
|
|
||||||
if position.x > 256.0:
|
|
||||||
dir = -1.0
|
|
||||||
scale.x = -1.0
|
|
||||||
if position.x < po:
|
|
||||||
dir = 1.0
|
|
||||||
scale.x = 1.0
|
|
||||||
"
|
|
||||||
|
|
||||||
[sub_resource type="Animation" id=2]
|
|
||||||
length = 0.001
|
|
||||||
tracks/0/type = "value"
|
|
||||||
tracks/0/path = NodePath(".: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(".: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(".:flip_v")
|
|
||||||
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": [ false ]
|
|
||||||
}
|
|
||||||
tracks/3/type = "value"
|
|
||||||
tracks/3/path = NodePath(".:rotation_degrees")
|
|
||||||
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": 0,
|
|
||||||
"values": [ 0.0 ]
|
|
||||||
}
|
|
||||||
|
|
||||||
[sub_resource type="Animation" id=3]
|
|
||||||
resource_name = "spin"
|
|
||||||
length = 0.8
|
|
||||||
loop = true
|
|
||||||
tracks/0/type = "value"
|
|
||||||
tracks/0/path = NodePath(".: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.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7 ),
|
|
||||||
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ),
|
|
||||||
"update": 1,
|
|
||||||
"values": [ 0, 1, 0, 1, 0, 1, 0, 1 ]
|
|
||||||
}
|
|
||||||
tracks/1/type = "value"
|
|
||||||
tracks/1/path = NodePath(".:rotation_degrees")
|
|
||||||
tracks/1/interp = 1
|
|
||||||
tracks/1/loop_wrap = true
|
|
||||||
tracks/1/imported = false
|
|
||||||
tracks/1/enabled = true
|
|
||||||
tracks/1/keys = {
|
|
||||||
"times": PoolRealArray( 0, 0.2, 0.4, 0.6 ),
|
|
||||||
"transitions": PoolRealArray( 1, 1, 1, 1 ),
|
|
||||||
"update": 1,
|
|
||||||
"values": [ 0.0, 90.0, 180.0, 270.0 ]
|
|
||||||
}
|
|
||||||
|
|
||||||
[node name="Map" type="Node2D" groups=["map"]]
|
[node name="Map" type="Node2D" groups=["map"]]
|
||||||
script = ExtResource( 1 )
|
script = ExtResource( 1 )
|
||||||
|
@ -160,6 +60,7 @@ texture = ExtResource( 3 )
|
||||||
centered = false
|
centered = false
|
||||||
|
|
||||||
[node name="Camera2D" parent="." instance=ExtResource( 2 )]
|
[node name="Camera2D" parent="." instance=ExtResource( 2 )]
|
||||||
|
scroll_v = true
|
||||||
|
|
||||||
[node name="Player" parent="." instance=ExtResource( 4 )]
|
[node name="Player" parent="." instance=ExtResource( 4 )]
|
||||||
position = Vector2( 24, 136 )
|
position = Vector2( 24, 136 )
|
||||||
|
@ -167,24 +68,11 @@ __meta__ = {
|
||||||
"_edit_group_": true
|
"_edit_group_": true
|
||||||
}
|
}
|
||||||
|
|
||||||
[node name="Sprite" type="Sprite" parent="."]
|
|
||||||
material = SubResource( 1 )
|
|
||||||
position = Vector2( 124, 92 )
|
|
||||||
texture = ExtResource( 8 )
|
|
||||||
hframes = 2
|
|
||||||
script = SubResource( 4 )
|
|
||||||
|
|
||||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="Sprite"]
|
|
||||||
autoplay = "spin"
|
|
||||||
playback_speed = 2.0
|
|
||||||
anims/RESET = SubResource( 2 )
|
|
||||||
anims/spin = SubResource( 3 )
|
|
||||||
|
|
||||||
[node name="Ground" type="TileMap" parent="."]
|
[node name="Ground" type="TileMap" parent="."]
|
||||||
tile_set = ExtResource( 5 )
|
tile_set = ExtResource( 5 )
|
||||||
cell_size = Vector2( 8, 8 )
|
cell_size = Vector2( 8, 8 )
|
||||||
format = 1
|
format = 1
|
||||||
tile_data = PoolIntArray( -65523, 1610612739, 0, -65512, 1610612738, 0, -65509, 1610612737, 0, -65508, 1610612737, 0, -65507, 1610612737, 0, -65506, 1610612737, 0, -65505, 1610612737, 0, -65504, 1610612737, 0, -65503, 1610612737, 0, -65502, 1610612737, 0, 13, 1610612739, 0, 65549, 1610612739, 0, 65554, 0, 0, 65555, 0, 2, 65556, 0, 0, 131085, 1610612739, 0, 131090, -1073741824, 2, 131091, 0, 65536, 131092, -1073741824, 2, 131096, 3, 0, 196621, 1610612739, 0, 196626, 0, 0, 196627, 0, 2, 196628, 0, 0, 196632, 3, 0, 262145, 1610612738, 0, 262148, 1, 0, 262149, 1, 0, 262150, 1, 0, 262151, 1, 0, 262152, 1, 0, 262153, 1, 0, 262154, 1, 0, 262155, 1, 0, 262156, 1, 0, 262157, 2, 0, 262168, 3, 0, 327696, 1610612738, 0, 327699, 1, 0, 327700, 1, 0, 327701, 1, 0, 327702, 1, 0, 327703, 1, 0, 327704, 2, 0, 393233, 0, 65536, 393241, 0, 0, 458753, 1610612739, 0, 524289, 1610612739, 0, 524298, 0, 0, 524299, 0, 2, 524300, 0, 2, 524301, 0, 0, 589825, 1610612739, 0, 655361, 1610612739, 0, 655365, 0, 1, 655366, 1610612736, 2, 655367, 1610612736, 2, 655368, 1610612736, 2, 655369, 1610612736, 2, 655370, 0, 3, 655374, 1610612738, 0, 655377, 1, 0, 655378, 1, 0, 655379, 1, 0, 655380, 1, 0, 655381, 1, 0, 655382, 1, 0, 655383, 1, 0, 655384, 1, 0, 655385, 1, 0, 655386, 1, 0, 655387, 1, 0, 655388, 1, 0, 655389, 1, 0, 655390, 1, 0, 655391, 1, 0, 720897, 1610612739, 0, 786433, 1610612739, 0, 851969, 1610612739, 0, 851982, 1610612739, 0, 917518, 1610612739, 0, 983054, 1610612739, 0, 1048590, 1610612739, 0, 1114122, 0, 0, 1114123, 0, 2, 1114124, 0, 2, 1114125, 0, 0, 1114126, 1610612739, 0, 1179658, -1073741824, 2, 1179659, 0, 65536, 1179660, 0, 65536, 1179661, -1073741824, 2, 1179662, 1610612739, 0, 1245194, 0, 0, 1245195, 0, 2, 1245196, 0, 2, 1245197, 0, 0, 1245198, 1610612739, 0, 1310721, 0, 1, 1310722, 0, 2, 1310723, 0, 2, 1310724, 0, 2, 1310725, 0, 2, 1310726, 0, 2, 1310727, 0, 2, 1310728, 0, 2, 1310729, 0, 3, 1310734, 1610612739, 0, 1376270, 1610612739, 0, 1441806, 1610612739, 0, 1507342, 1610612739, 0 )
|
tile_data = PoolIntArray( -65523, 1610612739, 0, -65512, 1610612738, 0, -65509, 1610612737, 0, -65508, 1610612737, 0, -65507, 1610612737, 0, -65506, 1610612737, 0, -65505, 1610612737, 0, -65504, 1610612737, 0, -65503, 1610612737, 0, -65502, 1610612737, 0, 13, 1610612739, 0, 65549, 1610612739, 0, 65554, 0, 0, 65555, 0, 2, 65556, 0, 0, 131085, 1610612739, 0, 131090, -1073741824, 2, 131091, 0, 65536, 131092, -1073741824, 2, 131096, 3, 0, 196621, 1610612739, 0, 196626, 0, 0, 196627, 0, 2, 196628, 0, 0, 196632, 3, 0, 262145, 1610612738, 0, 262148, 1, 0, 262149, 1, 0, 262150, 1, 0, 262151, 1, 0, 262152, 1, 0, 262153, 1, 0, 262154, 1, 0, 262155, 1, 0, 262156, 1, 0, 262157, 2, 0, 262168, 3, 0, 327696, 1610612738, 0, 327699, 1, 0, 327700, 1, 0, 327701, 1, 0, 327702, 1, 0, 327703, 1, 0, 327704, 2, 0, 393233, 0, 65536, 393241, 0, 0, 458753, 1610612739, 0, 524289, 1610612739, 0, 524292, 1610612738, 0, 524295, 1, 0, 524296, 1, 0, 524297, 1, 0, 524298, 1, 0, 524299, 1, 0, 524300, 1, 0, 524301, 1, 0, 524302, 1, 0, 524303, 1, 0, 524304, 1, 0, 524305, 1, 0, 524306, 1, 0, 524307, 1, 0, 524308, 1, 0, 524309, -1073741822, 0, 589825, 1610612739, 0, 655361, 1610612739, 0, 720897, 1610612739, 0, 720900, 3, 0, 720917, 3, 0, 786433, 1610612739, 0, 786436, 3, 0, 786453, 3, 0, 851969, 1610612739, 0, 851989, 3, 0, 917517, 1, 0, 917518, 1, 0, 917519, 1, 0, 917520, 1, 0, 917521, 1, 0, 917522, 1, 0, 917523, 1, 0, 917524, 1, 0, 917525, 2, 0, 1114122, 0, 0, 1114123, 0, 2, 1114124, 0, 2, 1114125, 0, 0, 1179658, -1073741824, 2, 1179659, 0, 65536, 1179660, 0, 65536, 1179661, -1073741824, 2, 1245194, 0, 0, 1245195, 0, 2, 1245196, 0, 2, 1245197, 0, 0, 1310721, 0, 1, 1310722, 0, 2, 1310723, 0, 2, 1310724, 0, 2, 1310725, 0, 2, 1310726, 0, 2, 1310727, 0, 2, 1310728, 0, 2, 1310729, 0, 3 )
|
||||||
|
|
||||||
[node name="Ladder2" type="TileMap" parent="."]
|
[node name="Ladder2" type="TileMap" parent="."]
|
||||||
tile_set = ExtResource( 5 )
|
tile_set = ExtResource( 5 )
|
||||||
|
@ -197,6 +85,31 @@ position = Vector2( 56, 136 )
|
||||||
scale = Vector2( 1, 3 )
|
scale = Vector2( 1, 3 )
|
||||||
|
|
||||||
[node name="Turret" parent="." instance=ExtResource( 10 )]
|
[node name="Turret" parent="." instance=ExtResource( 10 )]
|
||||||
position = Vector2( 96, 72 )
|
position = Vector2( 96, 160 )
|
||||||
|
|
||||||
|
[node name="Area2D" type="Area2D" parent="."]
|
||||||
|
position = Vector2( 8, 160 )
|
||||||
|
|
||||||
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
|
||||||
|
position = Vector2( 0, -16 )
|
||||||
|
shape = SubResource( 5 )
|
||||||
|
|
||||||
|
[node name="TubeEntrance" parent="." instance=ExtResource( 6 )]
|
||||||
|
position = Vector2( 104, 120 )
|
||||||
|
|
||||||
|
[node name="TubeEntrance2" parent="." instance=ExtResource( 6 )]
|
||||||
|
position = Vector2( 176, 120 )
|
||||||
|
direction = Vector2( 0, -1 )
|
||||||
|
|
||||||
|
[node name="TubeEntrance3" parent="." instance=ExtResource( 6 )]
|
||||||
|
position = Vector2( 176, 72 )
|
||||||
|
direction = Vector2( -1, 0 )
|
||||||
|
|
||||||
|
[node name="TubeEntrance4" parent="." instance=ExtResource( 6 )]
|
||||||
|
position = Vector2( 40, 72 )
|
||||||
|
direction = Vector2( 0, 1 )
|
||||||
|
|
||||||
|
[node name="TubeExit" parent="." instance=ExtResource( 7 )]
|
||||||
|
position = Vector2( 40, 104 )
|
||||||
|
|
||||||
[connection signal="tree_entered" from="Sectors" to="Sectors" method="set_visible" binds= [ false ]]
|
[connection signal="tree_entered" from="Sectors" to="Sectors" method="set_visible" binds= [ false ]]
|
||||||
|
|
10
objects/environment/tube/tube_entrance.gd
Normal file
10
objects/environment/tube/tube_entrance.gd
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
extends Area2D
|
||||||
|
|
||||||
|
export var speed = 120.0
|
||||||
|
export var direction = Vector2.RIGHT
|
||||||
|
|
||||||
|
func _on_TubeEntrance_area_entered(area):
|
||||||
|
if area.is_in_group("player"):
|
||||||
|
var player = area.get_parent()
|
||||||
|
player.global_position = global_position + Vector2(4.0, 4.0)
|
||||||
|
player.enter_transport(speed, direction)
|
16
objects/environment/tube/tube_entrance.tscn
Normal file
16
objects/environment/tube/tube_entrance.tscn
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
[gd_scene load_steps=3 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://objects/environment/tube/tube_entrance.gd" type="Script" id=1]
|
||||||
|
|
||||||
|
[sub_resource type="RectangleShape2D" id=1]
|
||||||
|
extents = Vector2( 4, 4 )
|
||||||
|
|
||||||
|
[node name="TubeEntrance" type="Area2D"]
|
||||||
|
monitorable = false
|
||||||
|
script = ExtResource( 1 )
|
||||||
|
|
||||||
|
[node name="CollisionShape" type="CollisionShape2D" parent="."]
|
||||||
|
position = Vector2( 4, 4 )
|
||||||
|
shape = SubResource( 1 )
|
||||||
|
|
||||||
|
[connection signal="area_entered" from="." to="." method="_on_TubeEntrance_area_entered"]
|
5
objects/environment/tube/tube_exit.gd
Normal file
5
objects/environment/tube/tube_exit.gd
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
extends Area2D
|
||||||
|
|
||||||
|
func _on_TubeExit_area_entered(area):
|
||||||
|
if area.is_in_group("player"):
|
||||||
|
area.get_parent().exit_transport()
|
16
objects/environment/tube/tube_exit.tscn
Normal file
16
objects/environment/tube/tube_exit.tscn
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
[gd_scene load_steps=3 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://objects/environment/tube/tube_exit.gd" type="Script" id=1]
|
||||||
|
|
||||||
|
[sub_resource type="RectangleShape2D" id=1]
|
||||||
|
extents = Vector2( 4, 4 )
|
||||||
|
|
||||||
|
[node name="TubeExit" type="Area2D"]
|
||||||
|
monitorable = false
|
||||||
|
script = ExtResource( 1 )
|
||||||
|
|
||||||
|
[node name="CollisionShape" type="CollisionShape2D" parent="."]
|
||||||
|
position = Vector2( 4, 4 )
|
||||||
|
shape = SubResource( 1 )
|
||||||
|
|
||||||
|
[connection signal="area_entered" from="." to="." method="_on_TubeExit_area_entered"]
|
|
@ -14,7 +14,7 @@ onready var dust_particles = $DustParticles
|
||||||
#Map
|
#Map
|
||||||
onready var map = get_owner()
|
onready var map = get_owner()
|
||||||
##States
|
##States
|
||||||
enum State {IDLE,WALK,JUMP,FALL,STUNNED,CLIMB,SWORD,SHOOT,INACTIVE}
|
enum State {IDLE,WALK,JUMP,FALL,STUNNED,CLIMB,SWORD,SHOOT,INACTIVE,TRANSPORT}
|
||||||
var current_state = State.IDLE
|
var current_state = State.IDLE
|
||||||
##Runtime
|
##Runtime
|
||||||
var axis = Vector2.ZERO #Current direction being held
|
var axis = Vector2.ZERO #Current direction being held
|
||||||
|
@ -25,10 +25,12 @@ var walk_speed = 50
|
||||||
var gravity = 12
|
var gravity = 12
|
||||||
var jump_pressure = 0
|
var jump_pressure = 0
|
||||||
var jump_force = 150
|
var jump_force = 150
|
||||||
var doublejump_force = 120
|
var doublejump_force = 122
|
||||||
var current_ladder = null #Used for checking climbing every frame instead of area entered
|
var current_ladder = null #Used for checking climbing every frame instead of area entered
|
||||||
var can_doublejump = true
|
var can_doublejump = true
|
||||||
var can_move_in_air = false
|
var can_move_in_air = false
|
||||||
|
var transport_speed = 0.0
|
||||||
|
var transport_direction = Vector2.ZERO
|
||||||
#Positions
|
#Positions
|
||||||
var arrowpos = Vector2(5,3)
|
var arrowpos = Vector2(5,3)
|
||||||
##Preload
|
##Preload
|
||||||
|
@ -70,6 +72,10 @@ func _physics_process(delta):
|
||||||
continue
|
continue
|
||||||
State.SHOOT:
|
State.SHOOT:
|
||||||
_process_shoot()
|
_process_shoot()
|
||||||
|
continue
|
||||||
|
State.TRANSPORT:
|
||||||
|
_process_transport(delta)
|
||||||
|
return
|
||||||
|
|
||||||
#Gravity
|
#Gravity
|
||||||
if current_state != State.CLIMB:
|
if current_state != State.CLIMB:
|
||||||
|
@ -199,6 +205,9 @@ func _process_shoot():
|
||||||
return
|
return
|
||||||
move(walk_speed,0,true)
|
move(walk_speed,0,true)
|
||||||
|
|
||||||
|
func _process_transport(delta):
|
||||||
|
position += transport_direction * transport_speed * delta
|
||||||
|
|
||||||
func spawn_arrow():
|
func spawn_arrow():
|
||||||
Game.play_sound(Game.a_shoot,Game.ac_jump)
|
Game.play_sound(Game.a_shoot,Game.ac_jump)
|
||||||
var arrow = ArrowProjectile.instance()
|
var arrow = ArrowProjectile.instance()
|
||||||
|
@ -269,6 +278,15 @@ func check_ladder():
|
||||||
#Move the raycast
|
#Move the raycast
|
||||||
#climb_ray.position.x = 4 * sprite.scale.x
|
#climb_ray.position.x = 4 * sprite.scale.x
|
||||||
|
|
||||||
|
func enter_transport(speed, direction):
|
||||||
|
transport_speed = speed
|
||||||
|
transport_direction = direction
|
||||||
|
current_state = State.TRANSPORT
|
||||||
|
anims.play("doublejump")
|
||||||
|
|
||||||
|
func exit_transport():
|
||||||
|
current_state = State.FALL
|
||||||
|
|
||||||
func die():
|
func die():
|
||||||
if current_state == State.INACTIVE:
|
if current_state == State.INACTIVE:
|
||||||
return
|
return
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue