Tile Map hover

This commit is contained in:
wjsjwr 2024-11-21 23:33:49 +08:00
parent c7649e774b
commit 41654c78c7
3 changed files with 327 additions and 4 deletions

290
lab.tscn
View File

@ -1,7 +1,8 @@
[gd_scene load_steps=6 format=4 uid="uid://chkhsro6w06rg"]
[gd_scene load_steps=10 format=4 uid="uid://chkhsro6w06rg"]
[ext_resource type="Texture2D" uid="uid://chqegsqdgeq34" path="res://temp_res/kenney_tiny-town/Tilemap/tilemap_packed.png" id="1_qt51n"]
[ext_resource type="Texture2D" uid="uid://e1wpflj415hp" path="res://temp_res/kenney_tiny-dungeon/Tilemap/tilemap_packed.png" id="1_yu0wa"]
[ext_resource type="Script" path="res://scripts/TestMap.cs" id="3_mca7j"]
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_s736i"]
texture = ExtResource("1_yu0wa")
@ -277,8 +278,291 @@ texture = ExtResource("1_qt51n")
sources/0 = SubResource("TileSetAtlasSource_s736i")
sources/1 = SubResource("TileSetAtlasSource_ltoth")
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_fufp2"]
texture = ExtResource("1_yu0wa")
0:0/0 = 0
1:0/0 = 0
2:0/0 = 0
3:0/0 = 0
4:0/0 = 0
5:0/0 = 0
6:0/0 = 0
7:0/0 = 0
8:0/0 = 0
9:0/0 = 0
10:0/0 = 0
11:0/0 = 0
0:1/0 = 0
1:1/0 = 0
2:1/0 = 0
3:1/0 = 0
4:1/0 = 0
5:1/0 = 0
6:1/0 = 0
7:1/0 = 0
8:1/0 = 0
9:1/0 = 0
10:1/0 = 0
11:1/0 = 0
0:2/0 = 0
1:2/0 = 0
2:2/0 = 0
3:2/0 = 0
4:2/0 = 0
5:2/0 = 0
6:2/0 = 0
7:2/0 = 0
8:2/0 = 0
9:2/0 = 0
10:2/0 = 0
11:2/0 = 0
0:3/0 = 0
1:3/0 = 0
2:3/0 = 0
3:3/0 = 0
4:3/0 = 0
5:3/0 = 0
6:3/0 = 0
7:3/0 = 0
8:3/0 = 0
9:3/0 = 0
10:3/0 = 0
11:3/0 = 0
0:4/0 = 0
1:4/0 = 0
2:4/0 = 0
3:4/0 = 0
4:4/0 = 0
5:4/0 = 0
6:4/0 = 0
7:4/0 = 0
8:4/0 = 0
9:4/0 = 0
10:4/0 = 0
11:4/0 = 0
0:5/0 = 0
1:5/0 = 0
2:5/0 = 0
3:5/0 = 0
4:5/0 = 0
5:5/0 = 0
6:5/0 = 0
7:5/0 = 0
8:5/0 = 0
9:5/0 = 0
10:5/0 = 0
11:5/0 = 0
0:6/0 = 0
1:6/0 = 0
2:6/0 = 0
3:6/0 = 0
4:6/0 = 0
5:6/0 = 0
6:6/0 = 0
7:6/0 = 0
8:6/0 = 0
9:6/0 = 0
10:6/0 = 0
11:6/0 = 0
0:7/0 = 0
1:7/0 = 0
2:7/0 = 0
3:7/0 = 0
4:7/0 = 0
5:7/0 = 0
6:7/0 = 0
7:7/0 = 0
8:7/0 = 0
9:7/0 = 0
10:7/0 = 0
11:7/0 = 0
0:8/0 = 0
1:8/0 = 0
2:8/0 = 0
3:8/0 = 0
4:8/0 = 0
5:8/0 = 0
6:8/0 = 0
7:8/0 = 0
8:8/0 = 0
9:8/0 = 0
10:8/0 = 0
11:8/0 = 0
0:9/0 = 0
1:9/0 = 0
2:9/0 = 0
3:9/0 = 0
4:9/0 = 0
5:9/0 = 0
6:9/0 = 0
7:9/0 = 0
8:9/0 = 0
9:9/0 = 0
10:9/0 = 0
11:9/0 = 0
0:10/0 = 0
1:10/0 = 0
2:10/0 = 0
3:10/0 = 0
4:10/0 = 0
5:10/0 = 0
6:10/0 = 0
7:10/0 = 0
8:10/0 = 0
9:10/0 = 0
10:10/0 = 0
11:10/0 = 0
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_nuiiq"]
texture = ExtResource("1_qt51n")
0:0/0 = 0
1:0/0 = 0
2:0/0 = 0
3:0/0 = 0
4:0/0 = 0
5:0/0 = 0
6:0/0 = 0
7:0/0 = 0
8:0/0 = 0
9:0/0 = 0
10:0/0 = 0
11:0/0 = 0
0:1/0 = 0
1:1/0 = 0
2:1/0 = 0
3:1/0 = 0
4:1/0 = 0
5:1/0 = 0
6:1/0 = 0
7:1/0 = 0
8:1/0 = 0
9:1/0 = 0
10:1/0 = 0
11:1/0 = 0
0:2/0 = 0
1:2/0 = 0
2:2/0 = 0
3:2/0 = 0
4:2/0 = 0
5:2/0 = 0
6:2/0 = 0
7:2/0 = 0
8:2/0 = 0
9:2/0 = 0
10:2/0 = 0
11:2/0 = 0
0:3/0 = 0
1:3/0 = 0
2:3/0 = 0
3:3/0 = 0
4:3/0 = 0
5:3/0 = 0
6:3/0 = 0
7:3/0 = 0
8:3/0 = 0
9:3/0 = 0
10:3/0 = 0
11:3/0 = 0
0:4/0 = 0
1:4/0 = 0
2:4/0 = 0
3:4/0 = 0
4:4/0 = 0
5:4/0 = 0
6:4/0 = 0
7:4/0 = 0
8:4/0 = 0
9:4/0 = 0
10:4/0 = 0
11:4/0 = 0
0:5/0 = 0
1:5/0 = 0
2:5/0 = 0
3:5/0 = 0
4:5/0 = 0
5:5/0 = 0
6:5/0 = 0
7:5/0 = 0
8:5/0 = 0
9:5/0 = 0
10:5/0 = 0
11:5/0 = 0
0:6/0 = 0
1:6/0 = 0
2:6/0 = 0
3:6/0 = 0
4:6/0 = 0
5:6/0 = 0
6:6/0 = 0
7:6/0 = 0
8:6/0 = 0
9:6/0 = 0
10:6/0 = 0
11:6/0 = 0
0:7/0 = 0
1:7/0 = 0
2:7/0 = 0
3:7/0 = 0
4:7/0 = 0
5:7/0 = 0
6:7/0 = 0
7:7/0 = 0
8:7/0 = 0
9:7/0 = 0
10:7/0 = 0
11:7/0 = 0
0:8/0 = 0
1:8/0 = 0
2:8/0 = 0
3:8/0 = 0
4:8/0 = 0
5:8/0 = 0
6:8/0 = 0
7:8/0 = 0
8:8/0 = 0
9:8/0 = 0
10:8/0 = 0
11:8/0 = 0
0:9/0 = 0
1:9/0 = 0
2:9/0 = 0
3:9/0 = 0
4:9/0 = 0
5:9/0 = 0
6:9/0 = 0
7:9/0 = 0
8:9/0 = 0
9:9/0 = 0
10:9/0 = 0
11:9/0 = 0
0:10/0 = 0
1:10/0 = 0
2:10/0 = 0
3:10/0 = 0
4:10/0 = 0
5:10/0 = 0
6:10/0 = 0
7:10/0 = 0
8:10/0 = 0
9:10/0 = 0
10:10/0 = 0
11:10/0 = 0
[sub_resource type="TileSet" id="TileSet_4gmnq"]
sources/0 = SubResource("TileSetAtlasSource_fufp2")
sources/1 = SubResource("TileSetAtlasSource_nuiiq")
[node name="Lab" type="Node2D"]
[node name="TileMapLayer" type="TileMapLayer" parent="."]
tile_map_data = PackedByteArray("AAAEAAMAAAAAAAAAAAAFAAMAAAAAAAAAAAAFAAQAAAAAAAAAAAAGAAQAAAAAAAAAAAAHAAQAAAAAAAAAAAAIAAQAAAAAAAAAAAAJAAUAAAAAAAAAAAAKAAUAAAAAAAAAAAALAAUAAAAAAAAAAAAMAAUAAAAAAAAAAAAMAAYAAAAAAAAAAAAMAAcAAAAAAAAAAAANAAcAAAAAAAAAAAAOAAgAAAAAAAAAAAAPAAkAAAAAAAAAAAAQAAoAAAAAAAAAAAARAAsAAAAAAAAAAAASAAsAAAAAAAAAAAATAAwAAAAAAAAAAAAUAA0AAAAAAAAAAAAVAA4AAAAAAAAAAAAiABsAAAADAAIAAAAjABsAAAADAAIAAAAkABsAAAADAAIAAAAlABsAAAADAAIAAAAmABsAAAADAAIAAAAiABoAAAADAAIAAAAjABoAAAADAAIAAAAkABoAAAADAAIAAAAlABoAAAADAAIAAAAmABoAAAADAAIAAAAnABoAAAADAAIAAAAnABsAAAADAAIAAAA=")
[node name="TestMap" type="TileMapLayer" parent="."]
scale = Vector2(10, 10)
tile_map_data = PackedByteArray("AAAAAAAAAAAGAAMAAAABAAAAAAAGAAMAAAACAAAAAAAGAAMAAAADAAAAAAAGAAMAAAAEAAAAAAAGAAMAAAAFAAAAAAAGAAMAAAAGAAAAAAAGAAMAAAAGAAEAAAAGAAMAAAAGAAIAAAAGAAMAAAAGAAMAAAAGAAMAAAAFAAMAAAAGAAMAAAAEAAMAAAAGAAMAAAADAAMAAAAGAAMAAAACAAMAAAAGAAMAAAABAAMAAAAGAAMAAAAAAAMAAAAGAAMAAAAAAAEAAAABAAQAAAABAAEAAAAAAAYAAAADAAEAAAAAAAYAAAACAAEAAAABAAQAAAAEAAEAAAABAAQAAAAAAAIAAAABAAQAAAABAAIAAAAAAAYAAAACAAIAAAABAAQAAAAEAAIAAAABAAQAAAADAAIAAAAAAAYAAAAFAAIAAAAAAAYAAAAFAAEAAAAAAAYAAAAHAAAAAAALAAYAAAAHAAEAAAALAAYAAAAHAAIAAAALAAYAAAAHAAMAAAALAAYAAAAHAAQAAAALAAcAAAAGAAQAAAAKAAUAAAAFAAQAAAAKAAUAAAAEAAQAAAAKAAUAAAADAAQAAAAKAAUAAAACAAQAAAAKAAUAAAABAAQAAAAKAAUAAAAAAAQAAAAKAAUAAAA=")
tile_set = SubResource("TileSet_8aks8")
collision_visibility_mode = 1
[node name="Highlight" type="TileMapLayer" parent="."]
scale = Vector2(10, 10)
tile_map_data = PackedByteArray("AAAAAAAAAAACAAUAAAABAAAAAAACAAUAAAACAAAAAAACAAUAAAADAAAAAAACAAUAAAAEAAAAAAACAAUAAAAFAAAAAAACAAUAAAAGAAAAAAACAAUAAAAGAAEAAAACAAUAAAAFAAEAAAACAAUAAAAEAAEAAAACAAUAAAADAAEAAAACAAUAAAACAAEAAAACAAUAAAABAAEAAAACAAUAAAAAAAEAAAACAAUAAAAAAAIAAAACAAUAAAABAAIAAAACAAUAAAACAAIAAAACAAUAAAADAAIAAAACAAUAAAAEAAIAAAACAAUAAAAFAAIAAAACAAUAAAAGAAIAAAACAAUAAAAGAAMAAAACAAUAAAAFAAMAAAACAAUAAAAEAAMAAAACAAUAAAADAAMAAAACAAUAAAACAAMAAAACAAUAAAABAAMAAAACAAUAAAAAAAMAAAACAAUAAAA=")
tile_set = SubResource("TileSet_4gmnq")
collision_visibility_mode = 1
script = ExtResource("3_mca7j")

View File

@ -11,7 +11,7 @@ config_version=5
[application]
config/name="导师模拟器"
run/main_scene="res://node_2d.tscn"
run/main_scene="res://lab.tscn"
config/features=PackedStringArray("4.3", "C#", "GL Compatibility")
config/icon="res://icon.svg"
@ -50,3 +50,7 @@ dialogic_default_action={
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null)
]
}
[rendering]
textures/canvas_textures/default_texture_filter=0

35
scripts/TestMap.cs Normal file
View File

@ -0,0 +1,35 @@
using Godot;
using System;
public partial class TestMap : TileMapLayer
{
/// <summary>
/// The last cell that was highlighted. Used to avoid unnecessary updates.
/// </summary>
private Vector2I lastHighlightCell;
private readonly Vector2I highlightTileCoord = new(0, 5);
private readonly Vector2I vector2INegOne = new(-1, -1);
// Called when the node enters the scene tree for the first time.
public override void _Ready()
{
lastHighlightCell = vector2INegOne;
}
// Called every frame. 'delta' is the elapsed time since the previous frame.
public override void _Process(double delta)
{
Vector2 mousePos = GetLocalMousePosition();
Vector2I cell = LocalToMap(mousePos);
if (cell != lastHighlightCell)
{
if (lastHighlightCell != vector2INegOne)
{
EraseCell(lastHighlightCell);
}
lastHighlightCell = cell;
SetCell(cell, 0, highlightTileCoord);
GD.Print("Mouse is over cell: ", cell);
}
}
}