This commit is contained in:
2025-04-26 15:44:04 -05:00
parent 8a1166fc19
commit 11605c9f17
10 changed files with 225 additions and 24 deletions

Binary file not shown.

View File

@@ -0,0 +1,28 @@
[remap]
importer="Aseprite SpriteFrames"
type="SpriteFrames"
uid="uid://b31mdngbhms7k"
path="res://.godot/imported/button.aseprite-330c6544a3de5fb54bfcd807901558f0.res"
[deps]
source_file="res://entities/button/button.aseprite"
dest_files=["res://.godot/imported/button.aseprite-330c6544a3de5fb54bfcd807901558f0.res"]
[params]
animation/default/name="default"
animation/default/direction=0
animation/default/repeat_count=0
animation/autoplay_name=""
atlas_textures/region_filter_clip_enabled=false
middle_import_script=""
post_import_script=""
sprite_sheet/edges_artifacts_avoidance_method=0
sprite_sheet/sprites_surrounding_color=Color(1, 1, 1, 0)
sprite_sheet/layout=0
sprite_sheet/max_cells_in_strip=0
sprite_sheet/trim_sprites_to_overall_min_size=true
sprite_sheet/collapse_transparent_sprites=true
sprite_sheet/merge_duplicated_sprites=true

Binary file not shown.

After

Width:  |  Height:  |  Size: 583 B

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://m8ophji4p35i"
path="res://.godot/imported/button.aseprite.png-65b0b5c35c3c69ebe0561afd09528d1a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://entities/button/button.aseprite.png"
dest_files=["res://.godot/imported/button.aseprite.png-65b0b5c35c3c69ebe0561afd09528d1a.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -0,0 +1,17 @@
[gd_scene load_steps=3 format=3 uid="uid://q3f3j7p3t43w"]
[ext_resource type="SpriteFrames" uid="uid://b31mdngbhms7k" path="res://entities/button/button.aseprite" id="1_4tlb3"]
[sub_resource type="CircleShape2D" id="CircleShape2D_4tlb3"]
radius = 13.0
[node name="Button" type="Node2D"]
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
sprite_frames = ExtResource("1_4tlb3")
animation = &"Press"
[node name="Area2D" type="Area2D" parent="."]
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
shape = SubResource("CircleShape2D_4tlb3")

Binary file not shown.

View File

@@ -1,17 +1,54 @@
# This script controls a top-down player character using input and rotates towards the mouse or right stick.
extends CharacterBody2D
# Player movement speed (pixels per second)
@export var speed = 200
const SPEED = 300.0
@export var friction = 16
# Rotation speed (radians per second) - adjust for desired rotation speed
@export var rotation_speed = PI * 4 # Rotate 2 full circles per second
func _physics_process(delta: float) -> void:
# Use mouse for rotation? If false, uses gamepad right stick.
@export var rotate_with_mouse = true
# Get the input direction and handle the movement/deceleration.
# As good practice, you should replace UI actions with custom gameplay actions.
var direction := Input.get_vector("ui_left", "ui_right","ui_up", "ui_down")
if direction:
velocity = direction * SPEED
# Called every physics frame. 'delta' is the elapsed time since the previous frame.
func _physics_process(delta):
# --- Movement Logic ---
var input_vector = Input.get_vector("move_left", "move_right", "move_up", "move_down")
# Set the velocity based on input
if input_vector != Vector2.ZERO:
velocity = input_vector * speed
else:
velocity = lerp(velocity, Vector2.ZERO, 0.75)
# If no input, stop the player (optional, you might want friction instead)
velocity = lerp(velocity, Vector2.ZERO, friction * delta)
# Move the player and handle collisions using CharacterBody2D's move_and_slide
move_and_slide()
# --- Rotation Logic ---
var target_rotation_direction = Vector2.ZERO
if rotate_with_mouse:
# Get the mouse position in world coordinates
var mouse_position = get_global_mouse_position()
# Calculate the direction vector from the player to the mouse
target_rotation_direction = global_position.direction_to(mouse_position)
else:
# Get right analog stick input
target_rotation_direction = Input.get_vector("rotate_left", "rotate_right", "rotate_up", "rotate_down")
# If there is a valid rotation direction (either from mouse or stick input)
if target_rotation_direction != Vector2.ZERO:
# Calculate the target rotation angle in radians
var target_angle = target_rotation_direction.angle()
# Smoothly rotate the player towards the target angle
# Using lerp_angle for smooth interpolation of angles
rotation = lerp_angle(rotation, target_angle, rotation_speed * delta)
# Note: Make sure you have input actions configured in Project Settings -> Input Map:
# - "move_up", "move_down", "move_left", "move_right" for movement.
# - If not using mouse rotation, add "rotate_up", "rotate_down", "rotate_left", "rotate_right"
# and map them to the right analog stick axes (e.g., Joy Axis 4- for left, Joy Axis 4+ for right, etc.)

View File

@@ -15,3 +15,5 @@ shape = SubResource("CircleShape2D_sfv1e")
[node name="Sprite2D" type="Sprite2D" parent="."]
self_modulate = Color(0.223529, 1, 1, 1)
texture = ExtResource("2_abrql")
[node name="Camera2D" type="Camera2D" parent="."]

View File

@@ -18,6 +18,53 @@ config/icon="res://icon.svg"
enabled=PackedStringArray("res://addons/nklbdev.importality/plugin.cfg")
[input]
move_left={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null)
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":-1.0,"script":null)
]
}
move_right={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null)
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":1.0,"script":null)
]
}
move_up={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null)
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":-1.0,"script":null)
]
}
move_down={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null)
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":1.0,"script":null)
]
}
rotate_left={
"deadzone": 0.2,
"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":2,"axis_value":-1.0,"script":null)
]
}
rotate_right={
"deadzone": 0.2,
"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":2,"axis_value":1.0,"script":null)
]
}
rotate_up={
"deadzone": 0.2,
"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":3,"axis_value":-1.0,"script":null)
]
}
rotate_down={
"deadzone": 0.2,
"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":3,"axis_value":1.0,"script":null)
]
}
[rendering]
renderer/rendering_method="gl_compatibility"

View File

@@ -9,82 +9,118 @@ texture_region_size = Vector2i(32, 32)
0:0/0 = 0
0:0/0/terrain_set = 0
0:0/0/terrain = 0
0:0/0/terrains_peering_bit/right_side = 0
0:0/0/terrains_peering_bit/bottom_right_corner = 0
0:0/0/terrains_peering_bit/bottom_side = 0
0:1/0 = 0
0:1/0/terrain_set = 0
0:1/0/terrain = 0
0:1/0/terrains_peering_bit/right_side = 0
0:1/0/terrains_peering_bit/bottom_right_corner = 0
0:1/0/terrains_peering_bit/bottom_side = 0
0:1/0/terrains_peering_bit/top_side = 0
0:1/0/terrains_peering_bit/top_right_corner = 0
0:2/0 = 0
0:2/0/terrain_set = 0
0:2/0/terrain = 0
0:2/0/terrains_peering_bit/right_side = 0
0:2/0/terrains_peering_bit/top_side = 0
0:2/0/terrains_peering_bit/top_right_corner = 0
1:0/0 = 0
1:0/0/terrain_set = 0
1:0/0/terrain = 0
1:0/0/terrains_peering_bit/right_side = 0
1:0/0/terrains_peering_bit/bottom_right_corner = 0
1:0/0/terrains_peering_bit/bottom_side = 0
1:0/0/terrains_peering_bit/bottom_left_corner = 0
1:0/0/terrains_peering_bit/left_side = 0
1:1/0 = 0
1:1/0/terrain_set = 0
1:1/0/terrain = 0
1:1/0/terrains_peering_bit/right_side = 0
1:1/0/terrains_peering_bit/bottom_right_corner = 0
1:1/0/terrains_peering_bit/bottom_side = 0
1:1/0/terrains_peering_bit/bottom_left_corner = 0
1:1/0/terrains_peering_bit/left_side = 0
1:1/0/terrains_peering_bit/top_left_corner = 0
1:1/0/terrains_peering_bit/top_side = 0
1:1/0/terrains_peering_bit/top_right_corner = 0
1:2/0 = 0
1:2/0/terrain_set = 0
1:2/0/terrain = 0
1:2/0/terrains_peering_bit/right_side = 0
1:2/0/terrains_peering_bit/left_side = 0
1:2/0/terrains_peering_bit/top_left_corner = 0
1:2/0/terrains_peering_bit/top_side = 0
1:2/0/terrains_peering_bit/top_right_corner = 0
2:0/0 = 0
2:0/0/terrain_set = 0
2:0/0/terrain = 0
2:0/0/terrains_peering_bit/right_side = 0
2:0/0/terrains_peering_bit/bottom_right_corner = 0
2:0/0/terrains_peering_bit/bottom_side = 0
2:0/0/terrains_peering_bit/bottom_left_corner = 0
2:0/0/terrains_peering_bit/left_side = 0
2:1/0 = 0
2:1/0/terrain_set = 0
2:1/0/terrain = 0
2:1/0/terrains_peering_bit/right_side = 0
2:1/0/terrains_peering_bit/bottom_right_corner = 0
2:1/0/terrains_peering_bit/bottom_side = 0
2:1/0/terrains_peering_bit/bottom_left_corner = 0
2:1/0/terrains_peering_bit/left_side = 0
2:1/0/terrains_peering_bit/top_left_corner = 0
2:1/0/terrains_peering_bit/top_side = 0
2:1/0/terrains_peering_bit/top_right_corner = 0
2:2/0 = 0
2:2/0/terrain_set = 0
2:2/0/terrain = 0
2:2/0/terrains_peering_bit/right_side = 0
2:2/0/terrains_peering_bit/left_side = 0
2:2/0/terrains_peering_bit/top_left_corner = 0
2:2/0/terrains_peering_bit/top_side = 0
2:2/0/terrains_peering_bit/top_right_corner = 0
3:0/0 = 0
3:0/0/terrain_set = 0
3:0/0/terrain = 0
3:0/0/terrains_peering_bit/bottom_side = 0
3:0/0/terrains_peering_bit/bottom_left_corner = 0
3:0/0/terrains_peering_bit/left_side = 0
4:0/0 = 0
4:0/0/terrain_set = 0
4:0/0/terrain = 0
4:0/0/terrains_peering_bit/right_side = 0
4:0/0/terrains_peering_bit/bottom_side = 0
4:0/0/terrains_peering_bit/left_side = 0
4:0/0/terrains_peering_bit/top_side = 0
3:1/0 = 0
3:1/0/terrain_set = 0
3:1/0/terrain = 0
3:1/0/terrains_peering_bit/bottom_side = 0
3:1/0/terrains_peering_bit/bottom_left_corner = 0
3:1/0/terrains_peering_bit/left_side = 0
3:1/0/terrains_peering_bit/top_left_corner = 0
3:1/0/terrains_peering_bit/top_side = 0
3:2/0 = 0
3:2/0/terrain_set = 0
3:2/0/terrain = 0
3:2/0/terrains_peering_bit/left_side = 0
3:2/0/terrains_peering_bit/top_left_corner = 0
3:2/0/terrains_peering_bit/top_side = 0
3:3/0 = 0
3:3/0/terrain_set = 0
3:3/0/terrain = 0
3:3/0/terrains_peering_bit/left_side = 0
2:3/0 = 0
2:3/0/terrain_set = 0
2:3/0/terrain = 0
2:3/0/terrains_peering_bit/right_side = 0
2:3/0/terrains_peering_bit/left_side = 0
1:3/0 = 0
1:3/0/terrain_set = 0
1:3/0/terrain = 0
1:3/0/terrains_peering_bit/right_side = 0
0:3/0 = 0
0:3/0/terrain_set = 0
0:3/0/terrain = 0
[sub_resource type="TileSet" id="TileSet_wjxv1"]
tile_size = Vector2i(32, 32)
terrain_set_0/mode = 0
terrain_set_0/terrain_0/name = "Grass"
terrain_set_0/terrain_0/color = Color(0.376471, 0.784314, 0.207843, 1)
terrain_set_0/terrain_0/color = Color(0.745098, 0.180392, 0.72549, 1)
sources/0 = SubResource("TileSetAtlasSource_6qmhn")
[node name="World1" type="Node2D"]
[node name="TileMapLayer" type="TileMapLayer" parent="."]
tile_map_data = PackedByteArray("AAAAAAAAAAABAAEAAAAAAAEAAAABAAEAAAABAAEAAAABAAEAAAACAAIAAAABAAEAAAADAAIAAAABAAEAAAAEAAMAAAABAAEAAAAFAAMAAAABAAEAAAAFAAQAAAABAAEAAAAGAAQAAAABAAEAAAAHAAUAAAABAAEAAAAIAAUAAAACAAIAAAAIAAQAAAACAAEAAAAHAAMAAAABAAEAAAAGAAMAAAABAAEAAAAHAAQAAAABAAEAAAAGAAUAAAABAAEAAAAGAAYAAAAAAAIAAAAHAAYAAAACAAIAAAAFAAUAAAABAAIAAAAHAAIAAAABAAEAAAAIAAIAAAACAAEAAAAIAAEAAAACAAAAAAAHAAEAAAABAAEAAAAGAAIAAAABAAEAAAAEAAQAAAABAAEAAAADAAUAAAABAAIAAAAEAAUAAAABAAIAAAAGAAEAAAABAAEAAAAFAAEAAAABAAEAAAAEAAEAAAABAAEAAAADAAEAAAABAAEAAAABAAIAAAABAAEAAAAAAAMAAAABAAEAAAAAAAQAAAABAAEAAAABAAQAAAABAAEAAAACAAQAAAABAAEAAAADAAQAAAABAAEAAAAFAAIAAAABAAEAAAACAAMAAAABAAEAAAADAAMAAAABAAEAAAAHAAAAAAACAAEAAAAGAP//AAABAAEAAAAFAP//AAABAAEAAAAEAP//AAABAAEAAAACAAAAAAABAAEAAAADAP//AAABAAAAAAABAAAAAAABAAEAAAD//wIAAAABAAEAAAD//wMAAAABAAEAAAABAAMAAAABAAEAAAAEAAIAAAABAAEAAAAFAAAAAAABAAEAAAACAAEAAAABAAEAAAD//wQAAAABAAEAAAAAAAUAAAABAAEAAAD//wUAAAABAAEAAAD+/wYAAAABAAEAAAD+/wcAAAAAAAIAAAD//wcAAAABAAIAAAAAAAcAAAACAAIAAAABAAYAAAACAAIAAAACAAUAAAABAAIAAAAEAAAAAAABAAEAAAAFAP7/AAABAAEAAAAEAP7/AAAAAAAAAAACAP//AAABAAAAAAD+/wIAAAABAAEAAAAAAAIAAAABAAEAAAD+/wQAAAABAAEAAAD+/wMAAAABAAEAAAD//wEAAAABAAEAAAD//wAAAAABAAEAAAD+/wEAAAABAAEAAAD9/wQAAAABAAEAAAD9/wUAAAAAAAIAAAD+/wUAAAABAAEAAAABAAUAAAABAAEAAAAAAAYAAAABAAEAAAD//wYAAAABAAEAAAAIAAMAAAACAAEAAAAGAAAAAAABAAEAAAADAAAAAAABAAEAAAAGAP7/AAABAAEAAAAHAP7/AAACAAAAAAAHAP//AAACAAEAAAAGAP3/AAACAAAAAAAFAP3/AAAAAAAAAAD9/wMAAAABAAEAAAD9/wIAAAABAAEAAAD9/wEAAAABAAEAAAD9/wAAAAABAAEAAAD+/wAAAAABAAEAAAD9////AAABAAEAAAD+////AAABAAEAAAD/////AAABAAEAAAAAAP//AAABAAAAAAABAP//AAABAAAAAAD8////AAAAAAAAAAD8/wAAAAAAAAEAAAD8/wEAAAABAAEAAAD8/wIAAAABAAEAAAD8/wMAAAABAAEAAAD8/wQAAAABAAIAAAD+//7/AAABAAAAAAD///7/AAACAAAAAAD7/wIAAAABAAEAAAD6/wIAAAABAAEAAAD5/wIAAAAAAAEAAAD5/wMAAAAAAAIAAAD6/wMAAAABAAIAAAD7/wMAAAABAAEAAAD7/wEAAAABAAAAAAD6/wEAAAABAAAAAAD5/wEAAAAAAAAAAAD7/wQAAAAAAAIAAAD9//7/AAAAAAAAAAA=")
tile_map_data = PackedByteArray("AAAAAAAAAAACAAEAAAAAAAEAAAACAAEAAAABAAEAAAACAAEAAAACAAIAAAACAAEAAAADAAIAAAACAAEAAAAEAAMAAAACAAEAAAAFAAMAAAACAAEAAAAFAAQAAAACAAEAAAAGAAQAAAACAAEAAAAHAAUAAAACAAEAAAAIAAUAAAADAAIAAAAIAAQAAAADAAEAAAAHAAMAAAACAAEAAAAGAAMAAAACAAEAAAAHAAQAAAACAAEAAAAGAAUAAAACAAEAAAAGAAYAAAABAAIAAAAHAAYAAAADAAIAAAAFAAUAAAACAAIAAAAHAAIAAAACAAEAAAAIAAIAAAADAAEAAAAIAAEAAAADAAAAAAAHAAEAAAACAAEAAAAGAAIAAAACAAEAAAAEAAQAAAACAAEAAAADAAUAAAACAAIAAAAEAAUAAAACAAIAAAAGAAEAAAACAAEAAAAFAAEAAAACAAEAAAAEAAEAAAACAAEAAAADAAEAAAACAAEAAAABAAIAAAACAAEAAAAAAAMAAAACAAEAAAAAAAQAAAACAAEAAAABAAQAAAACAAEAAAACAAQAAAACAAEAAAADAAQAAAACAAEAAAAFAAIAAAACAAEAAAACAAMAAAACAAEAAAADAAMAAAACAAEAAAAHAAAAAAADAAEAAAAGAP//AAACAAEAAAAFAP//AAACAAEAAAAEAP//AAACAAEAAAACAAAAAAACAAEAAAADAP//AAACAAAAAAABAAAAAAACAAEAAAD//wIAAAACAAEAAAD//wMAAAACAAEAAAABAAMAAAACAAEAAAAEAAIAAAACAAEAAAAFAAAAAAACAAEAAAACAAEAAAACAAEAAAD//wQAAAACAAEAAAAAAAUAAAACAAEAAAD//wUAAAACAAEAAAD+/wYAAAABAAEAAAD+/wcAAAABAAIAAAD//wcAAAACAAIAAAAAAAcAAAADAAIAAAABAAYAAAADAAIAAAACAAUAAAACAAIAAAAEAAAAAAACAAEAAAAFAP7/AAACAAEAAAAEAP7/AAABAAAAAAACAP//AAACAAAAAAD+/wIAAAACAAEAAAAAAAIAAAACAAEAAAD+/wQAAAACAAEAAAD+/wMAAAACAAEAAAD//wEAAAACAAEAAAD//wAAAAACAAEAAAD+/wEAAAACAAEAAAD9/wQAAAACAAEAAAD9/wUAAAABAAIAAAD+/wUAAAACAAEAAAABAAUAAAACAAEAAAAAAAYAAAACAAEAAAD//wYAAAACAAEAAAAIAAMAAAADAAEAAAAGAAAAAAACAAEAAAADAAAAAAACAAEAAAAGAP7/AAACAAEAAAAHAP7/AAADAAAAAAAHAP//AAADAAEAAAAGAP3/AAADAAAAAAAFAP3/AAABAAAAAAD9/wMAAAACAAEAAAD9/wIAAAACAAEAAAD9/wEAAAACAAEAAAD9/wAAAAACAAEAAAD+/wAAAAACAAEAAAD9////AAACAAEAAAD+////AAACAAEAAAD/////AAACAAEAAAAAAP//AAACAAEAAAABAP//AAACAAAAAAD8////AAABAAAAAAD8/wAAAAABAAEAAAD8/wEAAAACAAEAAAD8/wIAAAACAAEAAAD8/wMAAAACAAEAAAD8/wQAAAACAAIAAAD+//7/AAACAAAAAAD///7/AAACAAAAAAD7/wIAAAACAAEAAAD6/wIAAAACAAEAAAD5/wIAAAABAAEAAAD5/wMAAAABAAIAAAD6/wMAAAACAAIAAAD7/wMAAAACAAEAAAD7/wEAAAACAAAAAAD6/wEAAAACAAAAAAD5/wEAAAABAAAAAAD7/wQAAAABAAIAAAD9//7/AAABAAAAAAAAAP7/AAADAAAAAAA=")
tile_set = SubResource("TileSet_wjxv1")
[node name="Player" parent="." instance=ExtResource("2_8t5gy")]