continued from previous commit
This commit is contained in:
parent
4cfa04e490
commit
34927f93ea
|
@ -1,16 +1,67 @@
|
|||
[gd_scene load_steps=5 format=2]
|
||||
[gd_scene load_steps=7 format=2]
|
||||
|
||||
[ext_resource path="res://Tile Sets/SnowySlopes.tres" type="TileSet" id=1]
|
||||
[ext_resource path="res://Units/DownhillAutoscrollerPlayer.tscn" type="PackedScene" id=2]
|
||||
[ext_resource path="res://Tile Sets/SnowySlopesExtra.tres" type="TileSet" id=3]
|
||||
[ext_resource path="res://Scripts/GameScene.gd" type="Script" id=5]
|
||||
|
||||
[sub_resource type="Animation" id=1]
|
||||
resource_name = "PitTransition"
|
||||
length = 1.5
|
||||
tracks/0/type = "value"
|
||||
tracks/0/path = NodePath(".:modulate")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/keys = {
|
||||
"times": PoolRealArray( 0, 0.9, 1.5 ),
|
||||
"transitions": PoolRealArray( 1, 1, 1 ),
|
||||
"update": 0,
|
||||
"values": [ Color( 1, 1, 1, 0 ), Color( 0, 0, 0, 1 ), Color( 1, 1, 1, 0 ) ]
|
||||
}
|
||||
tracks/1/type = "method"
|
||||
tracks/1/path = NodePath("../../Player")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/keys = {
|
||||
"times": PoolRealArray( 0.9 ),
|
||||
"transitions": PoolRealArray( 1 ),
|
||||
"values": [ {
|
||||
"args": [ ],
|
||||
"method": "respawn_from_pit"
|
||||
} ]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id=2]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
tracks/0/path = NodePath(".:modulate")
|
||||
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": [ Color( 1, 1, 1, 0 ) ]
|
||||
}
|
||||
|
||||
[node name="Scene" type="Node"]
|
||||
script = ExtResource( 5 )
|
||||
__meta__ = {
|
||||
"_edit_horizontal_guides_": [ 214.0, 332.0, 1379.0 ],
|
||||
"_edit_vertical_guides_": [ 2134.0, 3833.0, 10449.0 ]
|
||||
}
|
||||
tile_set_name = "SnowySlopes"
|
||||
camera_h_offset = 2.5
|
||||
spawning = {
|
||||
Vector2( 1, 1 ): "NPC"
|
||||
Vector2( 45, -6 ): "NPC",
|
||||
Vector2( 80, -7 ): "NPC",
|
||||
Vector2( 218, -29 ): "NPC"
|
||||
}
|
||||
|
||||
[node name="Stage" type="TileMap" parent="."]
|
||||
|
@ -31,4 +82,18 @@ position = Vector2( 10, -150 )
|
|||
|
||||
[node name="Camera2D" type="Camera2D" parent="Player"]
|
||||
offset = Vector2( 0, -15 )
|
||||
smoothing_speed = 6.0
|
||||
|
||||
[node name="SpectatorCam" type="Camera2D" parent="."]
|
||||
offset = Vector2( 0, -15 )
|
||||
|
||||
[node name="CanvasLayer" type="CanvasLayer" parent="."]
|
||||
|
||||
[node name="ColorRect" type="ColorRect" parent="CanvasLayer"]
|
||||
modulate = Color( 1, 1, 1, 0 )
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
color = Color( 0.12549, 0.231373, 0.2, 1 )
|
||||
|
||||
[node name="PitTransitionPlayer" type="AnimationPlayer" parent="CanvasLayer/ColorRect"]
|
||||
anims/PitTransition = SubResource( 1 )
|
||||
anims/RESET = SubResource( 2 )
|
||||
|
|
|
@ -208,7 +208,7 @@ const GRAVITY = 16.1 # gravity = 32.17 ft/s^2, grid unit is 2ft
|
|||
const MAX_FALL_SPEED = -37
|
||||
const ACCELERATION = 35
|
||||
const QUANTUM_DIST = 0.001
|
||||
const SPAWN_DISTANCE = 10
|
||||
const SPAWN_DISTANCE = 20
|
||||
|
||||
# specialized constants
|
||||
const FLASH_CYCLE = 0.15
|
||||
|
|
|
@ -253,6 +253,15 @@ func check_collision(unit : Unit, collider, collision_into_directions, delta):
|
|||
if intersects_results[0]:
|
||||
if is_ground_collision:
|
||||
if unit_env_collider[0] == Vector2(0, 0):
|
||||
|
||||
# slope acceleration for DownhillAutoscroller:
|
||||
# set the player's last_contacted_map_elem_type field
|
||||
if unit is DownhillAutoscrollerPlayer:
|
||||
unit.last_contacted_map_elem_type = collider_to_map_elem_type[collider]
|
||||
if collider_to_map_elem_type[collider] == Constants.MapElemType.OOB_LOWER:
|
||||
# this collision should have no effect
|
||||
return false
|
||||
|
||||
unit.pos.y = intersects_results[1].y + Constants.QUANTUM_DIST
|
||||
unit.pos.x = intersects_results[1].x
|
||||
if unit.unit_conditions[Constants.UnitCondition.IS_ON_GROUND]:
|
||||
|
@ -265,12 +274,6 @@ func check_collision(unit : Unit, collider, collision_into_directions, delta):
|
|||
unit.v_speed = 0
|
||||
unit.landed()
|
||||
reangle_move(unit, collider, false)
|
||||
|
||||
|
||||
# slope acceleration for DownhillAutoscroller:
|
||||
# set the player's last_contacted_map_elem_type field
|
||||
if unit is DownhillAutoscrollerPlayer:
|
||||
unit.last_contacted_map_elem_type = collider_to_map_elem_type[collider]
|
||||
else:
|
||||
if collider[0].x == collider[1].x:
|
||||
# vertical wall collision
|
||||
|
|
|
@ -11,6 +11,8 @@ var last_contacted_map_elem_type : int = Constants.MapElemType.SQUARE
|
|||
|
||||
var boost : float = 0 # to movement speed
|
||||
|
||||
var respawn_pos : Vector2
|
||||
|
||||
func execute_actions(delta):
|
||||
.execute_actions(delta)
|
||||
for action_num in Constants.UNIT_TYPE_ACTIONS[Constants.UnitType.PLAYER]:
|
||||
|
@ -46,10 +48,6 @@ func process_unit(delta, time_elapsed : float):
|
|||
facing = Constants.Direction.RIGHT
|
||||
actions[Constants.ActionType.MOVE] = true
|
||||
|
||||
# Check if fallen off
|
||||
if last_contacted_map_elem_type == Constants.MapElemType.OOB_LOWER:
|
||||
oob_lower()
|
||||
|
||||
# Fine tune the player's speed
|
||||
|
||||
if get_current_action() == Constants.UnitCurrentAction.RECOILING:
|
||||
|
@ -145,7 +143,11 @@ func landed():
|
|||
target_move_speed += boost
|
||||
boost = 0
|
||||
|
||||
func oob_lower():
|
||||
func react(delta):
|
||||
.react(delta)
|
||||
|
||||
# Check if fallen off
|
||||
if last_contacted_map_elem_type == Constants.MapElemType.OOB_LOWER:
|
||||
# Called when the player falls in a hole
|
||||
|
||||
# Calculate respawn point
|
||||
|
@ -156,13 +158,28 @@ func oob_lower():
|
|||
tile += Vector2.RIGHT
|
||||
while tilemap.get_cellv(tile) >= 0:
|
||||
tile += Vector2.UP
|
||||
pos = tile
|
||||
pos.x += 0.5
|
||||
pos.y *= -1
|
||||
respawn_pos = tile
|
||||
respawn_pos.x += 0.5
|
||||
respawn_pos.y *= -1
|
||||
last_contacted_map_elem_type = Constants.MapElemType.SLOPE_LEFT
|
||||
# =======================
|
||||
|
||||
# reset speed
|
||||
# should other things be done here?
|
||||
h_speed = 0
|
||||
# - player's ongoing trick has to be reset
|
||||
# - camera has to freeze its y position as player drops offscreen
|
||||
# - a smooth transition has to play
|
||||
# - player starts off recoiling and slowed down (they are hit)
|
||||
var spectator_cam : Camera2D = get_node("../SpectatorCam")
|
||||
spectator_cam.position = get_node("Camera2D").get_camera_screen_center()
|
||||
spectator_cam.offset = get_node("Camera2D").offset
|
||||
spectator_cam.make_current()
|
||||
var anim_player : AnimationPlayer = scene.find_node("PitTransitionPlayer")
|
||||
anim_player.play("PitTransition")
|
||||
|
||||
func respawn_from_pit():
|
||||
pos = respawn_pos
|
||||
hit(Constants.Direction.RIGHT)
|
||||
boost = 0
|
||||
get_node("Camera2D").make_current()
|
||||
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue