Work
Add DungeonEntrance and DungeonGuard. Some scripting for main character's movement.
This commit is contained in:
parent
5366561c58
commit
36cc125c7c
9 changed files with 235 additions and 5 deletions
30
DungeonEntrance.tscn
Normal file
30
DungeonEntrance.tscn
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
[gd_scene load_steps=4 format=3 uid="uid://b55f770t7xs6a"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://npjqgc3tdgs1" path="res://gimp/DungeonEntrance.png" id="1_vo6aq"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://nocjsuuft8qx" path="res://gimp/DungeonGuard.png" id="2_nujkm"]
|
||||||
|
|
||||||
|
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_18p8i"]
|
||||||
|
radius = 15.0
|
||||||
|
height = 32.0
|
||||||
|
|
||||||
|
[node name="Node2D" type="Node2D"]
|
||||||
|
|
||||||
|
[node name="DungeonEntrance" type="Sprite2D" parent="."]
|
||||||
|
texture_filter = 1
|
||||||
|
position = Vector2(-1, -320)
|
||||||
|
texture = ExtResource("1_vo6aq")
|
||||||
|
|
||||||
|
[node name="StaticBody2D" type="StaticBody2D" parent="DungeonEntrance"]
|
||||||
|
|
||||||
|
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="DungeonEntrance/StaticBody2D"]
|
||||||
|
polygon = PackedVector2Array(-160, 127, -159, -129, 160, -126, 161, 127, 21, 127, 21, 79, -19, 79, -19, 127)
|
||||||
|
|
||||||
|
[node name="DungeonGuard" type="Sprite2D" parent="."]
|
||||||
|
texture_filter = 1
|
||||||
|
position = Vector2(0, -208)
|
||||||
|
texture = ExtResource("2_nujkm")
|
||||||
|
|
||||||
|
[node name="StaticBody2D" type="StaticBody2D" parent="DungeonGuard"]
|
||||||
|
|
||||||
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="DungeonGuard/StaticBody2D"]
|
||||||
|
shape = SubResource("CapsuleShape2D_18p8i")
|
76
MainLogic.gd
76
MainLogic.gd
|
@ -17,6 +17,10 @@ const start_text = "You seek the elementals?\nProve your worth!\nShow the elemen
|
||||||
const intro_text_00 = "The name's Gander Schwartz.\nBut my friends call me the \"Wandering Gander\"."
|
const intro_text_00 = "The name's Gander Schwartz.\nBut my friends call me the \"Wandering Gander\"."
|
||||||
const intro_text_01 = "I'm what most would call a \"third-rate summoner\",\nbut there's a reason for that.\nI summon \"items\", not \"beasts\"."
|
const intro_text_01 = "I'm what most would call a \"third-rate summoner\",\nbut there's a reason for that.\nI summon \"items\", not \"beasts\"."
|
||||||
const intro_text_02 = "Most summoners summon beasts to fight for them.\nI summon items to fight with, or even tools to solve puzzles in dungeons."
|
const intro_text_02 = "Most summoners summon beasts to fight for them.\nI summon items to fight with, or even tools to solve puzzles in dungeons."
|
||||||
|
const intro_text_03 = "There is one dungeon I've been itching to conquer.\nThe elemental dungeon!"
|
||||||
|
const intro_text_04 = "If I beat the elemental dungeon,\nI'll be able to enhance my summons with elemental properties!"
|
||||||
|
const intro_text_05 = "No longer would I need to light an oil lantern with flint and steel,\nor keep lugging around leather skins for water!"
|
||||||
|
const intro_text_06 = "But the dungeon is a challenge.\nA challenge I hope to best with my wits and my item summoning!"
|
||||||
|
|
||||||
const diamond_angle_rate = 1.2
|
const diamond_angle_rate = 1.2
|
||||||
const diamond_dist_rate = 50.0
|
const diamond_dist_rate = 50.0
|
||||||
|
@ -33,7 +37,16 @@ enum StateT {
|
||||||
Introduction_01,
|
Introduction_01,
|
||||||
Introduction_01_post,
|
Introduction_01_post,
|
||||||
Introduction_02,
|
Introduction_02,
|
||||||
Introduction_02_post
|
Introduction_02_post,
|
||||||
|
Introduction_03,
|
||||||
|
Introduction_03_post,
|
||||||
|
Introduction_04,
|
||||||
|
Introduction_04_post,
|
||||||
|
Introduction_05,
|
||||||
|
Introduction_05_post,
|
||||||
|
Introduction_06,
|
||||||
|
Introduction_06_post,
|
||||||
|
Dungeon_Entrance
|
||||||
}
|
}
|
||||||
|
|
||||||
static var state_dict = {}
|
static var state_dict = {}
|
||||||
|
@ -110,6 +123,22 @@ func _process(delta):
|
||||||
update_text(intro_text_02, StateT.Introduction_02_post)
|
update_text(intro_text_02, StateT.Introduction_02_post)
|
||||||
StateT.Introduction_02_post:
|
StateT.Introduction_02_post:
|
||||||
pass
|
pass
|
||||||
|
StateT.Introduction_03:
|
||||||
|
update_text(intro_text_03, StateT.Introduction_03_post)
|
||||||
|
StateT.Introduction_03_post:
|
||||||
|
pass
|
||||||
|
StateT.Introduction_04:
|
||||||
|
update_text(intro_text_04, StateT.Introduction_04_post)
|
||||||
|
StateT.Introduction_04_post:
|
||||||
|
pass
|
||||||
|
StateT.Introduction_05:
|
||||||
|
update_text(intro_text_05, StateT.Introduction_05_post)
|
||||||
|
StateT.Introduction_05_post:
|
||||||
|
pass
|
||||||
|
StateT.Introduction_06:
|
||||||
|
update_text(intro_text_06, StateT.Introduction_06_post)
|
||||||
|
StateT.Introduction_06_post:
|
||||||
|
pass
|
||||||
_:
|
_:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@ -153,6 +182,51 @@ func _unhandled_input(event):
|
||||||
state_dict["timer"] = 0.0
|
state_dict["timer"] = 0.0
|
||||||
state_dict["text_idx"] = 0
|
state_dict["text_idx"] = 0
|
||||||
main_label.text = intro_text_02
|
main_label.text = intro_text_02
|
||||||
|
StateT.Introduction_02_post:
|
||||||
|
state_dict["state"] = StateT.Introduction_03
|
||||||
|
state_dict["timer"] = 0.0
|
||||||
|
state_dict["text_idx"] = 0
|
||||||
|
main_label.text = ""
|
||||||
|
StateT.Introduction_03:
|
||||||
|
state_dict["state"] = StateT.Introduction_03_post
|
||||||
|
state_dict["timer"] = 0.0
|
||||||
|
state_dict["text_idx"] = 0
|
||||||
|
main_label.text = intro_text_03
|
||||||
|
StateT.Introduction_03_post:
|
||||||
|
state_dict["state"] = StateT.Introduction_04
|
||||||
|
state_dict["timer"] = 0.0
|
||||||
|
state_dict["text_idx"] = 0
|
||||||
|
main_label.text = ""
|
||||||
|
StateT.Introduction_04:
|
||||||
|
state_dict["state"] = StateT.Introduction_04_post
|
||||||
|
state_dict["timer"] = 0.0
|
||||||
|
state_dict["text_idx"] = 0
|
||||||
|
main_label.text = intro_text_04
|
||||||
|
StateT.Introduction_04_post:
|
||||||
|
state_dict["state"] = StateT.Introduction_05
|
||||||
|
state_dict["timer"] = 0.0
|
||||||
|
state_dict["text_idx"] = 0
|
||||||
|
main_label.text = ""
|
||||||
|
StateT.Introduction_05:
|
||||||
|
state_dict["state"] = StateT.Introduction_05_post
|
||||||
|
state_dict["timer"] = 0.0
|
||||||
|
state_dict["text_idx"] = 0
|
||||||
|
main_label.text = intro_text_05
|
||||||
|
StateT.Introduction_05_post:
|
||||||
|
state_dict["state"] = StateT.Introduction_06
|
||||||
|
state_dict["timer"] = 0.0
|
||||||
|
state_dict["text_idx"] = 0
|
||||||
|
main_label.text = ""
|
||||||
|
StateT.Introduction_06:
|
||||||
|
state_dict["state"] = StateT.Introduction_06_post
|
||||||
|
state_dict["timer"] = 0.0
|
||||||
|
state_dict["text_idx"] = 0
|
||||||
|
main_label.text = intro_text_06
|
||||||
|
StateT.Introduction_06_post:
|
||||||
|
state_dict["state"] = StateT.Dungeon_Entrance
|
||||||
|
state_dict["timer"] = 0.0
|
||||||
|
state_dict["text_idx"] = 0
|
||||||
|
main_label.text = ""
|
||||||
_:
|
_:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
48
gander_schwartz.gd
Normal file
48
gander_schwartz.gd
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
extends CharacterBody2D
|
||||||
|
|
||||||
|
@onready var animated = $AnimatedSprite2D
|
||||||
|
|
||||||
|
const SPEED = 150.0
|
||||||
|
const ANIM_DEADZONE = 0.3
|
||||||
|
|
||||||
|
func _physics_process(delta):
|
||||||
|
var vec2 = Vector2()
|
||||||
|
if Input.is_action_pressed("Left"):
|
||||||
|
vec2.x = -1.0
|
||||||
|
elif Input.is_action_pressed("Right"):
|
||||||
|
vec2.x = 1.0
|
||||||
|
if Input.is_action_pressed("Up"):
|
||||||
|
vec2.y = -1.0
|
||||||
|
elif Input.is_action_pressed("Down"):
|
||||||
|
vec2.y = 1.0
|
||||||
|
|
||||||
|
if vec2.length() > 0.1:
|
||||||
|
vec2 = vec2.normalized()
|
||||||
|
else:
|
||||||
|
vec2.x = 0.0
|
||||||
|
vec2.y = 0.0
|
||||||
|
|
||||||
|
if vec2.x > ANIM_DEADZONE:
|
||||||
|
animated.play("walking_right")
|
||||||
|
elif vec2.x < -ANIM_DEADZONE:
|
||||||
|
animated.play("walking_left")
|
||||||
|
elif vec2.y > ANIM_DEADZONE:
|
||||||
|
animated.play("walking_front")
|
||||||
|
elif vec2.y < -ANIM_DEADZONE:
|
||||||
|
animated.play("walking_back")
|
||||||
|
else:
|
||||||
|
match animated.animation:
|
||||||
|
"walking_right":
|
||||||
|
animated.play("facing_right")
|
||||||
|
"walking_left":
|
||||||
|
animated.play("facing_left")
|
||||||
|
"walking_front":
|
||||||
|
animated.play("facing_front")
|
||||||
|
"walking_back":
|
||||||
|
animated.play("facing_back")
|
||||||
|
_:
|
||||||
|
pass
|
||||||
|
|
||||||
|
velocity = vec2 * SPEED
|
||||||
|
|
||||||
|
move_and_slide()
|
|
@ -1,5 +1,6 @@
|
||||||
[gd_scene load_steps=19 format=3 uid="uid://ktxqc7xtqkex"]
|
[gd_scene load_steps=21 format=3 uid="uid://ktxqc7xtqkex"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" path="res://gander_schwartz.gd" id="1_6ob4s"]
|
||||||
[ext_resource type="Texture2D" uid="uid://cv0qw4j1q78r8" path="res://gimp/GanderSchwartz_spritesheet.png" id="1_n7bds"]
|
[ext_resource type="Texture2D" uid="uid://cv0qw4j1q78r8" path="res://gimp/GanderSchwartz_spritesheet.png" id="1_n7bds"]
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mj0lb"]
|
[sub_resource type="AtlasTexture" id="AtlasTexture_mj0lb"]
|
||||||
|
@ -157,14 +158,23 @@ animations = [{
|
||||||
"speed": 5.0
|
"speed": 5.0
|
||||||
}]
|
}]
|
||||||
|
|
||||||
|
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_u3k2h"]
|
||||||
|
radius = 15.0
|
||||||
|
height = 80.0
|
||||||
|
|
||||||
[node name="GanderSchwartz" type="CharacterBody2D"]
|
[node name="GanderSchwartz" type="CharacterBody2D"]
|
||||||
|
motion_mode = 1
|
||||||
|
script = ExtResource("1_6ob4s")
|
||||||
|
|
||||||
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
|
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
|
||||||
texture_filter = 1
|
texture_filter = 1
|
||||||
position = Vector2(0, -24)
|
position = Vector2(0, -51)
|
||||||
|
scale = Vector2(2.11, 2.11)
|
||||||
sprite_frames = SubResource("SpriteFrames_i348s")
|
sprite_frames = SubResource("SpriteFrames_i348s")
|
||||||
animation = &"walking_front"
|
animation = &"walking_front"
|
||||||
frame = 3
|
frame = 3
|
||||||
frame_progress = 0.126405
|
frame_progress = 0.126405
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||||
|
position = Vector2(0, -40)
|
||||||
|
shape = SubResource("CapsuleShape2D_u3k2h")
|
||||||
|
|
BIN
gimp/DungeonEntrance.png
Normal file
BIN
gimp/DungeonEntrance.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 38 KiB |
34
gimp/DungeonEntrance.png.import
Normal file
34
gimp/DungeonEntrance.png.import
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://npjqgc3tdgs1"
|
||||||
|
path="res://.godot/imported/DungeonEntrance.png-d5377cb906979b90475313ef20f7ee37.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://gimp/DungeonEntrance.png"
|
||||||
|
dest_files=["res://.godot/imported/DungeonEntrance.png-d5377cb906979b90475313ef20f7ee37.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
|
BIN
gimp/DungeonGuard.png
Normal file
BIN
gimp/DungeonGuard.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 752 B |
34
gimp/DungeonGuard.png.import
Normal file
34
gimp/DungeonGuard.png.import
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://nocjsuuft8qx"
|
||||||
|
path="res://.godot/imported/DungeonGuard.png-dc8dcbb58e4d6814aac7a93a7908bbc9.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://gimp/DungeonGuard.png"
|
||||||
|
dest_files=["res://.godot/imported/DungeonGuard.png-dc8dcbb58e4d6814aac7a93a7908bbc9.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
|
|
@ -13,14 +13,14 @@ script = ExtResource("1_43no1")
|
||||||
[node name="Camera2D" type="Camera2D" parent="."]
|
[node name="Camera2D" type="Camera2D" parent="."]
|
||||||
|
|
||||||
[node name="MainLabel" type="Label" parent="Camera2D"]
|
[node name="MainLabel" type="Label" parent="Camera2D"]
|
||||||
z_index = 1
|
z_index = 5
|
||||||
offset_left = -277.0
|
offset_left = -277.0
|
||||||
offset_top = -96.0
|
offset_top = -96.0
|
||||||
offset_right = 278.0
|
offset_right = 278.0
|
||||||
offset_bottom = 97.0
|
offset_bottom = 97.0
|
||||||
|
|
||||||
[node name="LowerLabel" type="Label" parent="Camera2D"]
|
[node name="LowerLabel" type="Label" parent="Camera2D"]
|
||||||
z_index = 1
|
z_index = 5
|
||||||
offset_left = -237.0
|
offset_left = -237.0
|
||||||
offset_top = 101.0
|
offset_top = 101.0
|
||||||
offset_right = 239.0
|
offset_right = 239.0
|
||||||
|
|
Loading…
Reference in a new issue