Browse Source

Merge pull request #261 from GDquest/grid-based-movement-2d

Add 2d grid-based movement demo
Rémi Verschelde 6 years ago
parent
commit
01d2f78c13
27 changed files with 712 additions and 0 deletions
  1. 33 0
      2d/grid_based_movement/Game.tscn
  2. 101 0
      2d/grid_based_movement/default_env.tres
  3. 36 0
      2d/grid_based_movement/grid/grid.gd
  4. BIN
      2d/grid_based_movement/icon.png
  5. 32 0
      2d/grid_based_movement/icon.png.import
  6. 111 0
      2d/grid_based_movement/pawns/Actor.tscn
  7. 55 0
      2d/grid_based_movement/pawns/actor.gd
  8. 4 0
      2d/grid_based_movement/pawns/pawn.gd
  9. BIN
      2d/grid_based_movement/pawns/sprites/character.png
  10. 32 0
      2d/grid_based_movement/pawns/sprites/character.png.import
  11. BIN
      2d/grid_based_movement/pawns/sprites/character_grey.png
  12. 32 0
      2d/grid_based_movement/pawns/sprites/character_grey.png.import
  13. BIN
      2d/grid_based_movement/pawns/sprites/star.png
  14. 32 0
      2d/grid_based_movement/pawns/sprites/star.png.import
  15. 24 0
      2d/grid_based_movement/project.godot
  16. 27 0
      2d/grid_based_movement/tilesets/grid/GridTiles.tscn
  17. BIN
      2d/grid_based_movement/tilesets/grid/actor.png
  18. 32 0
      2d/grid_based_movement/tilesets/grid/actor.png.import
  19. 37 0
      2d/grid_based_movement/tilesets/grid/grid_tileset.tres
  20. BIN
      2d/grid_based_movement/tilesets/grid/object.png
  21. 32 0
      2d/grid_based_movement/tilesets/grid/object.png.import
  22. BIN
      2d/grid_based_movement/tilesets/grid/obstacle.png
  23. 32 0
      2d/grid_based_movement/tilesets/grid/obstacle.png.import
  24. 12 0
      2d/grid_based_movement/tilesets/grid_lines/GridLinesTiles.tscn
  25. BIN
      2d/grid_based_movement/tilesets/grid_lines/grid_lines.png
  26. 32 0
      2d/grid_based_movement/tilesets/grid_lines/grid_lines.png.import
  27. 16 0
      2d/grid_based_movement/tilesets/grid_lines/grid_lines_tileset.tres

File diff suppressed because it is too large
+ 33 - 0
2d/grid_based_movement/Game.tscn


+ 101 - 0
2d/grid_based_movement/default_env.tres

@@ -0,0 +1,101 @@
+[gd_resource type="Environment" load_steps=2 format=2]
+
+[sub_resource type="ProceduralSky" id=1]
+
+radiance_size = 4
+sky_top_color = Color( 0.0470588, 0.454902, 0.976471, 1 )
+sky_horizon_color = Color( 0.556863, 0.823529, 0.909804, 1 )
+sky_curve = 0.25
+sky_energy = 1.0
+ground_bottom_color = Color( 0.101961, 0.145098, 0.188235, 1 )
+ground_horizon_color = Color( 0.482353, 0.788235, 0.952941, 1 )
+ground_curve = 0.01
+ground_energy = 1.0
+sun_color = Color( 1, 1, 1, 1 )
+sun_latitude = 35.0
+sun_longitude = 0.0
+sun_angle_min = 1.0
+sun_angle_max = 100.0
+sun_curve = 0.05
+sun_energy = 16.0
+texture_size = 2
+
+[resource]
+
+background_mode = 2
+background_sky = SubResource( 1 )
+background_sky_custom_fov = 0.0
+background_color = Color( 0, 0, 0, 1 )
+background_energy = 1.0
+background_canvas_max_layer = 0
+ambient_light_color = Color( 0, 0, 0, 1 )
+ambient_light_energy = 1.0
+ambient_light_sky_contribution = 1.0
+fog_enabled = false
+fog_color = Color( 0.5, 0.6, 0.7, 1 )
+fog_sun_color = Color( 1, 0.9, 0.7, 1 )
+fog_sun_amount = 0.0
+fog_depth_enabled = true
+fog_depth_begin = 10.0
+fog_depth_curve = 1.0
+fog_transmit_enabled = false
+fog_transmit_curve = 1.0
+fog_height_enabled = false
+fog_height_min = 0.0
+fog_height_max = 100.0
+fog_height_curve = 1.0
+tonemap_mode = 0
+tonemap_exposure = 1.0
+tonemap_white = 1.0
+auto_exposure_enabled = false
+auto_exposure_scale = 0.4
+auto_exposure_min_luma = 0.05
+auto_exposure_max_luma = 8.0
+auto_exposure_speed = 0.5
+ss_reflections_enabled = false
+ss_reflections_max_steps = 64
+ss_reflections_fade_in = 0.15
+ss_reflections_fade_out = 2.0
+ss_reflections_depth_tolerance = 0.2
+ss_reflections_roughness = true
+ssao_enabled = false
+ssao_radius = 1.0
+ssao_intensity = 1.0
+ssao_radius2 = 0.0
+ssao_intensity2 = 1.0
+ssao_bias = 0.01
+ssao_light_affect = 0.0
+ssao_color = Color( 0, 0, 0, 1 )
+ssao_quality = 0
+ssao_blur = 3
+ssao_edge_sharpness = 4.0
+dof_blur_far_enabled = false
+dof_blur_far_distance = 10.0
+dof_blur_far_transition = 5.0
+dof_blur_far_amount = 0.1
+dof_blur_far_quality = 1
+dof_blur_near_enabled = false
+dof_blur_near_distance = 2.0
+dof_blur_near_transition = 1.0
+dof_blur_near_amount = 0.1
+dof_blur_near_quality = 1
+glow_enabled = false
+glow_levels/1 = false
+glow_levels/2 = false
+glow_levels/3 = true
+glow_levels/4 = false
+glow_levels/5 = true
+glow_levels/6 = false
+glow_levels/7 = false
+glow_intensity = 0.8
+glow_strength = 1.0
+glow_bloom = 0.0
+glow_blend_mode = 2
+glow_hdr_threshold = 1.0
+glow_hdr_scale = 2.0
+glow_bicubic_upscale = false
+adjustment_enabled = false
+adjustment_brightness = 1.0
+adjustment_contrast = 1.0
+adjustment_saturation = 1.0
+

+ 36 - 0
2d/grid_based_movement/grid/grid.gd

@@ -0,0 +1,36 @@
+extends TileMap
+
+enum CELL_TYPES { EMPTY = -1, ACTOR, OBSTACLE, OBJECT}
+
+func _ready():
+	for child in get_children():
+		set_cellv(world_to_map(child.position), child.type)
+
+
+func get_cell_pawn(coordinates):
+	for node in get_children():
+		if world_to_map(node.position) == coordinates:
+			return(node)
+
+
+func request_move(pawn, direction):
+	var cell_start = world_to_map(pawn.position)
+	var cell_target = cell_start + direction
+	
+	var cell_target_type = get_cellv(cell_target)
+	match cell_target_type:
+		EMPTY:
+			return update_pawn_position(pawn, cell_start, cell_target)
+		OBJECT:
+			var object_pawn = get_cell_pawn(cell_target)
+			object_pawn.queue_free()
+			return update_pawn_position(pawn, cell_start, cell_target)
+		ACTOR:
+			var pawn_name = get_cell_pawn(cell_target).name
+			print("Cell %s contains %s" % [cell_target, pawn_name])
+
+
+func update_pawn_position(pawn, cell_start, cell_target):
+	set_cellv(cell_target, pawn.type)
+	set_cellv(cell_start, EMPTY)
+	return map_to_world(cell_target) + cell_size / 2

BIN
2d/grid_based_movement/icon.png


+ 32 - 0
2d/grid_based_movement/icon.png.import

@@ -0,0 +1,32 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"
+
+[deps]
+
+source_file="res://icon.png"
+source_md5="3280104cdf8f7a9be38f70f9ff95cf50"
+
+dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ]
+dest_md5="df9a76b96b1fde8b55778a269d647ca3"
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

+ 111 - 0
2d/grid_based_movement/pawns/Actor.tscn

@@ -0,0 +1,111 @@
+[gd_scene load_steps=5 format=2]
+
+[ext_resource path="res://pawns/actor.gd" type="Script" id=1]
+[ext_resource path="res://pawns/sprites/character.png" type="Texture" id=2]
+
+[sub_resource type="Animation" id=1]
+
+resource_name = "bump"
+length = 0.1
+loop = false
+step = 0.01
+tracks/0/type = "value"
+tracks/0/path = NodePath("Pivot/Sprite:position")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/keys = {
+"times": PoolRealArray( 0, 0.02, 0.04, 0.06, 0.08, 0.1 ),
+"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ),
+"update": 0,
+"values": [ Vector2( 0, 0 ), Vector2( -1.5, -9 ), Vector2( 6.5, 2.5 ), Vector2( -11.5, 8.5 ), Vector2( 4, -5 ), Vector2( 0, 0 ) ]
+}
+
+[sub_resource type="Animation" id=2]
+
+resource_name = "walk"
+length = 0.25
+loop = false
+step = 0.05
+tracks/0/type = "value"
+tracks/0/path = NodePath("Pivot/Sprite:self_modulate")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/imported = false
+tracks/0/enabled = false
+tracks/0/keys = {
+"times": PoolRealArray( 0, 0.1, 0.25 ),
+"transitions": PoolRealArray( 1, 1, 1 ),
+"update": 0,
+"values": [ Color( 1, 1, 1, 1 ), Color( 1, 0.9375, 0, 1 ), Color( 1, 1, 1, 1 ) ]
+}
+tracks/1/type = "value"
+tracks/1/path = NodePath("Pivot/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.1, 0.15, 0.25 ),
+"transitions": PoolRealArray( 1, 0.303143, 2.61003, 1 ),
+"update": 0,
+"values": [ Vector2( 1.43051e-06, -1.90735e-06 ), Vector2( 1.43051e-06, -1.90735e-06 ), Vector2( 0, -20 ), Vector2( 1.43051e-06, -1.90735e-06 ) ]
+}
+tracks/2/type = "value"
+tracks/2/path = NodePath("Pivot/Sprite:scale")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/keys = {
+"times": PoolRealArray( 0, 0.05, 0.15, 0.25 ),
+"transitions": PoolRealArray( 1, 0.354553, 1, 1 ),
+"update": 0,
+"values": [ Vector2( 1, 1 ), Vector2( 1.20007, 0.917384 ), Vector2( 0.916712, 1.13495 ), Vector2( 1, 1 ) ]
+}
+
+[node name="Actor" type="Node2D" index="0"]
+
+position = Vector2( 32, 32 )
+z_index = 1
+script = ExtResource( 1 )
+_sections_unfolded = [ "Offset", "Transform", "Z Index" ]
+__meta__ = {
+"_edit_group_": true
+}
+type = 0
+
+[node name="AnimationPlayer" type="AnimationPlayer" parent="." index="0"]
+
+root_node = NodePath("..")
+autoplay = ""
+playback_process_mode = 1
+playback_default_blend_time = 0.0
+playback_speed = 1.0
+anims/bump = SubResource( 1 )
+anims/walk = SubResource( 2 )
+blend_times = [  ]
+
+[node name="Tween" type="Tween" parent="." index="1"]
+
+repeat = false
+playback_process_mode = 1
+playback_speed = 1.0
+playback/active = false
+playback/repeat = false
+playback/speed = 1.0
+
+[node name="Pivot" type="Position2D" parent="." index="2"]
+
+_sections_unfolded = [ "Transform" ]
+
+[node name="Sprite" type="Sprite" parent="Pivot" index="0"]
+
+position = Vector2( 1.43051e-06, -1.90735e-06 )
+texture = ExtResource( 2 )
+centered = false
+offset = Vector2( -32, -32 )
+_sections_unfolded = [ "Transform", "Visibility" ]
+
+

+ 55 - 0
2d/grid_based_movement/pawns/actor.gd

@@ -0,0 +1,55 @@
+extends "pawn.gd"
+
+onready var Grid = get_parent()
+
+func _ready():
+	update_look_direction(Vector2(1, 0))
+
+
+func _process(delta):
+	var input_direction = get_input_direction()
+	if not input_direction:
+		return
+	update_look_direction(input_direction)
+
+	var target_position = Grid.request_move(self, input_direction)
+	if target_position:
+		move_to(target_position)
+	else:
+		bump()
+
+
+func get_input_direction():
+	return Vector2(
+		int(Input.is_action_pressed("ui_right")) - int(Input.is_action_pressed("ui_left")),
+		int(Input.is_action_pressed("ui_down")) - int(Input.is_action_pressed("ui_up"))
+	)
+
+
+func update_look_direction(direction):
+	$Pivot/Sprite.rotation = direction.angle()
+
+
+func move_to(target_position):
+	set_process(false)
+	$AnimationPlayer.play("walk")
+
+	# Move the node to the target cell instantly,
+	# and animate the sprite moving from the start to the target cell
+	var move_direction = (target_position - position).normalized()
+	$Tween.interpolate_property($Pivot, "position", - move_direction * 32, Vector2(), $AnimationPlayer.current_animation_length, Tween.TRANS_LINEAR, Tween.EASE_IN)
+	position = target_position
+
+	$Tween.start()
+
+	# Stop the function execution until the animation finished
+	yield($AnimationPlayer, "animation_finished")
+	
+	set_process(true)
+
+
+func bump():
+	set_process(false)
+	$AnimationPlayer.play("bump")
+	yield($AnimationPlayer, "animation_finished")
+	set_process(true)

+ 4 - 0
2d/grid_based_movement/pawns/pawn.gd

@@ -0,0 +1,4 @@
+extends Node2D
+
+enum CELL_TYPES { ACTOR, OBSTACLE, OBJECT }
+export(CELL_TYPES) var type = ACTOR

BIN
2d/grid_based_movement/pawns/sprites/character.png


+ 32 - 0
2d/grid_based_movement/pawns/sprites/character.png.import

@@ -0,0 +1,32 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/character.png-98ed16816c5b464731c4fa68fe5b8613.stex"
+
+[deps]
+
+source_file="res://pawns/sprites/character.png"
+source_md5="03a1bf4fdd91e5a89e323e1a956b8b2e"
+
+dest_files=[ "res://.import/character.png-98ed16816c5b464731c4fa68fe5b8613.stex" ]
+dest_md5="dc0e808a19cb41bd3e4b8af9a1a2878e"
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

BIN
2d/grid_based_movement/pawns/sprites/character_grey.png


+ 32 - 0
2d/grid_based_movement/pawns/sprites/character_grey.png.import

@@ -0,0 +1,32 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/character_grey.png-a95d64c2e947e85f04dd1c6474e46965.stex"
+
+[deps]
+
+source_file="res://pawns/sprites/character_grey.png"
+source_md5="b2fc93bb6418bd5a1aeb9d4b23281b7d"
+
+dest_files=[ "res://.import/character_grey.png-a95d64c2e947e85f04dd1c6474e46965.stex" ]
+dest_md5="119083c34b0b039b9f6742e1aa84bcd1"
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

BIN
2d/grid_based_movement/pawns/sprites/star.png


+ 32 - 0
2d/grid_based_movement/pawns/sprites/star.png.import

@@ -0,0 +1,32 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/star.png-4f164f82cf41ace82182660f1be8e68d.stex"
+
+[deps]
+
+source_file="res://pawns/sprites/star.png"
+source_md5="c9eed33ac490155814b63a96281718bc"
+
+dest_files=[ "res://.import/star.png-4f164f82cf41ace82182660f1be8e68d.stex" ]
+dest_md5="b5e67be995733c89f151fdfd57ade882"
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

+ 24 - 0
2d/grid_based_movement/project.godot

@@ -0,0 +1,24 @@
+; 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=3
+
+[application]
+
+config/name="Grid Movement"
+run/main_scene="res://Game.tscn"
+config/icon="res://icon.png"
+
+[display]
+
+window/size/width=1280
+window/size/height=720
+
+[rendering]
+
+environment/default_environment="res://default_env.tres"

+ 27 - 0
2d/grid_based_movement/tilesets/grid/GridTiles.tscn

@@ -0,0 +1,27 @@
+[gd_scene load_steps=4 format=2]
+
+[ext_resource path="res://tilesets/grid/actor.png" type="Texture" id=1]
+[ext_resource path="res://tilesets/grid/obstacle.png" type="Texture" id=2]
+[ext_resource path="res://tilesets/grid/object.png" type="Texture" id=3]
+
+[node name="Node2D" type="Node2D"]
+
+[node name="Actor" type="Sprite" parent="." index="0"]
+
+position = Vector2( 32, 32 )
+texture = ExtResource( 1 )
+_sections_unfolded = [ "Visibility" ]
+
+[node name="Obstacle" type="Sprite" parent="." index="1"]
+
+position = Vector2( 96, 32 )
+texture = ExtResource( 2 )
+_sections_unfolded = [ "Visibility" ]
+
+[node name="Object" type="Sprite" parent="." index="2"]
+
+position = Vector2( 160, 32 )
+texture = ExtResource( 3 )
+_sections_unfolded = [ "Visibility" ]
+
+

BIN
2d/grid_based_movement/tilesets/grid/actor.png


+ 32 - 0
2d/grid_based_movement/tilesets/grid/actor.png.import

@@ -0,0 +1,32 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/actor.png-6a88af8a7bcb079732153877dfb0db8b.stex"
+
+[deps]
+
+source_file="res://tilesets/grid/actor.png"
+source_md5="1a3d788099e6d0431c41627de71ee5f9"
+
+dest_files=[ "res://.import/actor.png-6a88af8a7bcb079732153877dfb0db8b.stex" ]
+dest_md5="ca104a9f5ec006ce67b9996d27f4efa2"
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

+ 37 - 0
2d/grid_based_movement/tilesets/grid/grid_tileset.tres

@@ -0,0 +1,37 @@
+[gd_resource type="TileSet" load_steps=4 format=2]
+
+[ext_resource path="res://tilesets/grid/actor.png" type="Texture" id=1]
+[ext_resource path="res://tilesets/grid/obstacle.png" type="Texture" id=2]
+[ext_resource path="res://tilesets/grid/object.png" type="Texture" id=3]
+
+[resource]
+
+0/name = "Actor"
+0/texture = ExtResource( 1 )
+0/tex_offset = Vector2( 0, 0 )
+0/modulate = Color( 1, 1, 1, 1 )
+0/region = Rect2( 0, 0, 64, 64 )
+0/is_autotile = false
+0/occluder_offset = Vector2( 32, 32 )
+0/navigation_offset = Vector2( 32, 32 )
+0/shapes = [  ]
+1/name = "Obstacle"
+1/texture = ExtResource( 2 )
+1/tex_offset = Vector2( 0, 0 )
+1/modulate = Color( 1, 1, 1, 1 )
+1/region = Rect2( 0, 0, 64, 64 )
+1/is_autotile = false
+1/occluder_offset = Vector2( 32, 32 )
+1/navigation_offset = Vector2( 32, 32 )
+1/shapes = [  ]
+2/name = "Object"
+2/texture = ExtResource( 3 )
+2/tex_offset = Vector2( 0, 0 )
+2/modulate = Color( 1, 1, 1, 1 )
+2/region = Rect2( 0, 0, 64, 64 )
+2/is_autotile = false
+2/occluder_offset = Vector2( 32, 32 )
+2/navigation_offset = Vector2( 32, 32 )
+2/shapes = [  ]
+_sections_unfolded = [ "0", "1" ]
+

BIN
2d/grid_based_movement/tilesets/grid/object.png


+ 32 - 0
2d/grid_based_movement/tilesets/grid/object.png.import

@@ -0,0 +1,32 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/object.png-3e89ebfb3424e8759914732b2b0130c1.stex"
+
+[deps]
+
+source_file="res://tilesets/grid/object.png"
+source_md5="53b421d6eb9175f4b3900f7d48ad814e"
+
+dest_files=[ "res://.import/object.png-3e89ebfb3424e8759914732b2b0130c1.stex" ]
+dest_md5="1351b2d127dc461bda55bfde616cbdd6"
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

BIN
2d/grid_based_movement/tilesets/grid/obstacle.png


+ 32 - 0
2d/grid_based_movement/tilesets/grid/obstacle.png.import

@@ -0,0 +1,32 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/obstacle.png-9f01dd1d06d7b99515918b65b46bd6c1.stex"
+
+[deps]
+
+source_file="res://tilesets/grid/obstacle.png"
+source_md5="49a4f8eb121c949de35502481ec7e96a"
+
+dest_files=[ "res://.import/obstacle.png-9f01dd1d06d7b99515918b65b46bd6c1.stex" ]
+dest_md5="432d869b849ac70d4f76935622b2e37b"
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

+ 12 - 0
2d/grid_based_movement/tilesets/grid_lines/GridLinesTiles.tscn

@@ -0,0 +1,12 @@
+[gd_scene load_steps=2 format=2]
+
+[ext_resource path="res://tilesets/grid_lines/grid_lines.png" type="Texture" id=1]
+
+[node name="TileSet" type="Node2D" index="0"]
+
+[node name="Grass" type="Sprite" parent="." index="0"]
+
+position = Vector2( 32, 32 )
+texture = ExtResource( 1 )
+
+

BIN
2d/grid_based_movement/tilesets/grid_lines/grid_lines.png


+ 32 - 0
2d/grid_based_movement/tilesets/grid_lines/grid_lines.png.import

@@ -0,0 +1,32 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/grid_lines.png-beef853b47aa830c8383e5f6cc4d03ce.stex"
+
+[deps]
+
+source_file="res://tilesets/grid_lines/grid_lines.png"
+source_md5="9c6f3c1506ccfc666a4988a3b9655b1c"
+
+dest_files=[ "res://.import/grid_lines.png-beef853b47aa830c8383e5f6cc4d03ce.stex" ]
+dest_md5="411604865dd58a1618832442af953934"
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

+ 16 - 0
2d/grid_based_movement/tilesets/grid_lines/grid_lines_tileset.tres

@@ -0,0 +1,16 @@
+[gd_resource type="TileSet" load_steps=2 format=2]
+
+[ext_resource path="res://tilesets/grid_lines/grid_lines.png" type="Texture" id=1]
+
+[resource]
+
+0/name = "Grass"
+0/texture = ExtResource( 1 )
+0/tex_offset = Vector2( 0, 0 )
+0/modulate = Color( 1, 1, 1, 1 )
+0/region = Rect2( 0, 0, 64, 64 )
+0/is_autotile = false
+0/occluder_offset = Vector2( 32, 32 )
+0/navigation_offset = Vector2( 32, 32 )
+0/shapes = [  ]
+

Some files were not shown because too many files changed in this diff