소스 검색

Use TileMapLayer in Dynamic TileMap Layers (#1133)

TileMap is deprecated in 4.3 as TileMapLayer supersedes it.

Co-authored-by: Hugo Locurcio <[email protected]>
Yaxian 9 달 전
부모
커밋
1e02914267
3개의 변경된 파일18개의 추가작업 그리고 25개의 파일을 삭제
  1. 6 13
      2d/dynamic_tilemap_layers/level/tile_map.gd
  2. 8 8
      2d/dynamic_tilemap_layers/player/player.tscn
  3. 4 4
      2d/dynamic_tilemap_layers/world.tscn

+ 6 - 13
2d/dynamic_tilemap_layers/level/tile_map.gd

@@ -1,16 +1,9 @@
-extends TileMap
+extends TileMapLayer
 
 # You can have multiple layers if you make this an array.
-var secret_layer := 0
 var player_in_secret := false
 var layer_alpha := 1.0
 
-func _init() -> void:
-	for i in get_layers_count():
-		# Find the secret layer by name.
-		if get_layer_name(i) == "Secret":
-			secret_layer = i
-
 
 func _ready() -> void:
 	set_process(false)
@@ -21,22 +14,22 @@ func _process(delta: float) -> void:
 		if layer_alpha > 0.3:
 			# Animate the layer transparency.
 			layer_alpha = move_toward(layer_alpha, 0.3, delta)
-			set_layer_modulate(secret_layer, Color(1, 1, 1, layer_alpha))
+			self_modulate = Color(1, 1, 1, layer_alpha)
 		else:
 			set_process(false)
 	else:
 		if layer_alpha < 1.0:
 			layer_alpha = move_toward(layer_alpha, 1.0, delta)
-			set_layer_modulate(secret_layer, Color(1, 1, 1, layer_alpha))
+			self_modulate = Color(1, 1, 1, layer_alpha)
 		else:
 			set_process(false)
 
 
-func _use_tile_data_runtime_update(layer: int, _coords: Vector2i) -> bool:
-	return layer == secret_layer
+func _use_tile_data_runtime_update(_coords: Vector2i) -> bool:
+	return true
 
 
-func _tile_data_runtime_update(_layer: int, _coords: Vector2i, tile_data: TileData) -> void:
+func _tile_data_runtime_update(_coords: Vector2i, tile_data: TileData) -> void:
 	# Remove collision for secret layer.
 	tile_data.set_collision_polygons_count(0, 0)
 

+ 8 - 8
2d/dynamic_tilemap_layers/player/player.tscn

@@ -1,17 +1,17 @@
-[gd_scene load_steps=4 format=2]
+[gd_scene load_steps=4 format=3 uid="uid://1o70ce0fv10w"]
 
-[ext_resource path="res://player/player.gd" type="Script" id=1]
-[ext_resource path="res://player/player.png" type="Texture2D" id=2]
+[ext_resource type="Script" path="res://player/player.gd" id="1"]
+[ext_resource type="Texture2D" uid="uid://dfb8rr2fakwgp" path="res://player/player.png" id="2"]
 
-[sub_resource type="RectangleShape2D" id=1]
-extents = Vector2(7, 7)
+[sub_resource type="RectangleShape2D" id="1"]
+size = Vector2(14, 14)
 
 [node name="Player" type="CharacterBody2D"]
-script = ExtResource( 1 )
+script = ExtResource("1")
 
 [node name="Sprite2D" type="Sprite2D" parent="."]
-texture = ExtResource( 2 )
+texture = ExtResource("2")
 
 [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
 position = Vector2(-0.315559, 0.157784)
-shape = SubResource( 1 )
+shape = SubResource("1")

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 4 - 4
2d/dynamic_tilemap_layers/world.tscn


이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.