mirror of
https://gitlab.com/MaddoScientisto/cirnogodot.git
synced 2026-06-20 08:13:47 +00:00
Crosshair
This commit is contained in:
parent
e5a60a6ccd
commit
fe552608ee
13 changed files with 264 additions and 33 deletions
|
|
@ -3264,7 +3264,7 @@ Target = NodePath("../Door")
|
||||||
[node name="Enemies" type="Node3D" parent="."]
|
[node name="Enemies" type="Node3D" parent="."]
|
||||||
|
|
||||||
[node name="FloorEmitter" parent="Enemies" instance=ExtResource("63_r8ono")]
|
[node name="FloorEmitter" parent="Enemies" instance=ExtResource("63_r8ono")]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.2387, 1.15056, 24.7368)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.2387, 1.24491, 24.7368)
|
||||||
Script = ExtResource("64_fi82p")
|
Script = ExtResource("64_fi82p")
|
||||||
EmitOnStart = false
|
EmitOnStart = false
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AList_002Ecs_002Fl_003AC_0021_003FUsers_003FMaddo_003FAppData_003FLocal_003FJetBrains_003FShared_003FvAny_003FSourcesCache_003F1b81cb3be224213a6a73519b6e340a628d9a1fb8629c351a186a26f6376669_003FList_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AList_002Ecs_002Fl_003AC_0021_003FUsers_003FMaddo_003FAppData_003FLocal_003FJetBrains_003FShared_003FvAny_003FSourcesCache_003F1b81cb3be224213a6a73519b6e340a628d9a1fb8629c351a186a26f6376669_003FList_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ANativeCalls_002Ecs_002Fl_003AC_0021_003FUsers_003FMaddo_003FAppData_003FLocal_003FJetBrains_003FShared_003FvAny_003FSourcesCache_003F4178b6f96a2e273c05bd023e0a7f4ff5c747b218af487b1ac979f58bafb30d_003FNativeCalls_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ANativeCalls_002Ecs_002Fl_003AC_0021_003FUsers_003FMaddo_003FAppData_003FLocal_003FJetBrains_003FShared_003FvAny_003FSourcesCache_003F4178b6f96a2e273c05bd023e0a7f4ff5c747b218af487b1ac979f58bafb30d_003FNativeCalls_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ANode2D_002Ecs_002Fl_003AC_0021_003FUsers_003FMaddo_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fe37dc1faf08a4d5ea030ad59bdf77522523400_003F49_003F8f2ede17_003FNode2D_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ANode2D_002Ecs_002Fl_003AC_0021_003FUsers_003FMaddo_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fe37dc1faf08a4d5ea030ad59bdf77522523400_003F49_003F8f2ede17_003FNode2D_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ANode3D_002Ecs_002Fl_003AC_0021_003FUsers_003FMaddo_003FAppData_003FLocal_003FJetBrains_003FShared_003FvAny_003FSourcesCache_003F2d4443da87d5a5e36e61a843c597b1f44b520eba9b5866aaf155364eb2710f8_003FNode3D_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ANode_002Ecs_002Fl_003AC_0021_003FUsers_003FMaddo_003FAppData_003FLocal_003FJetBrains_003FShared_003FvAny_003FSourcesCache_003Fbb1b701f3c7411227a9d2e09f965d857ff3e771557650c4f513e427d77c_003FNode_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ANode_002Ecs_002Fl_003AC_0021_003FUsers_003FMaddo_003FAppData_003FLocal_003FJetBrains_003FShared_003FvAny_003FSourcesCache_003Fbb1b701f3c7411227a9d2e09f965d857ff3e771557650c4f513e427d77c_003FNode_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ANode_002Ecs_002Fl_003AC_0021_003FUsers_003FMaddo_003FAppData_003FLocal_003FJetBrains_003FShared_003FvAny_003FSourcesCache_003Ff1d69ec2da76ccf9bc8a75c8e0fdca9a7ba1adf8c8c9d5047e2fa5991c02eca_003FNode_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ANode_002Ecs_002Fl_003AC_0021_003FUsers_003FMaddo_003FAppData_003FLocal_003FJetBrains_003FShared_003FvAny_003FSourcesCache_003Ff1d69ec2da76ccf9bc8a75c8e0fdca9a7ba1adf8c8c9d5047e2fa5991c02eca_003FNode_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003APlayerMovement_005FScriptMethods_002Egenerated_002Ecs_002Fl_003AC_0021_003FUsers_003FMaddo_003FAppData_003FLocal_003FJetBrains_003FShared_003FvAny_003FSourcesCache_003F4af4702ac4bbb9ab7299554c41beea2bf703b4a_003FPlayerMovement_005FScriptMethods_002Egenerated_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003APlayerMovement_005FScriptMethods_002Egenerated_002Ecs_002Fl_003AC_0021_003FUsers_003FMaddo_003FAppData_003FLocal_003FJetBrains_003FShared_003FvAny_003FSourcesCache_003F4af4702ac4bbb9ab7299554c41beea2bf703b4a_003FPlayerMovement_005FScriptMethods_002Egenerated_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
[gd_scene load_steps=49 format=3 uid="uid://rimplblbptcd"]
|
[gd_scene load_steps=63 format=3 uid="uid://rimplblbptcd"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://88smibkin17p" path="res://Scripts/Components/FSM/3DPlayer/IsoPlayerFSMProxy.cs" id="1_cc7e7"]
|
[ext_resource type="Script" uid="uid://88smibkin17p" path="res://Scripts/Components/FSM/3DPlayer/IsoPlayerFSMProxy.cs" id="1_cc7e7"]
|
||||||
[ext_resource type="Texture2D" uid="uid://ddwhrlrgj6i00" path="res://Sprites/Actors/Cirno.png" id="1_vex34"]
|
[ext_resource type="Texture2D" uid="uid://ddwhrlrgj6i00" path="res://Sprites/Actors/Cirno.png" id="1_vex34"]
|
||||||
|
|
@ -28,6 +28,12 @@
|
||||||
[ext_resource type="Script" uid="uid://hdw15b6fi7de" path="res://Scripts/Components/Actors/3D/PlayerDamageReceiver3D.cs" id="26_ok6gd"]
|
[ext_resource type="Script" uid="uid://hdw15b6fi7de" path="res://Scripts/Components/Actors/3D/PlayerDamageReceiver3D.cs" id="26_ok6gd"]
|
||||||
[ext_resource type="Script" uid="uid://ddsqqfx1usc3j" path="res://Scripts/Resources/DamageResistance.cs" id="27_5v3dv"]
|
[ext_resource type="Script" uid="uid://ddsqqfx1usc3j" path="res://Scripts/Resources/DamageResistance.cs" id="27_5v3dv"]
|
||||||
[ext_resource type="Script" uid="uid://cqwvssstkrdmw" path="res://Scripts/Components/Actors/ActorResourceProvider.cs" id="28_b3jpo"]
|
[ext_resource type="Script" uid="uid://cqwvssstkrdmw" path="res://Scripts/Components/Actors/ActorResourceProvider.cs" id="28_b3jpo"]
|
||||||
|
[ext_resource type="Script" uid="uid://b2cqsoywem26t" path="res://Scripts/Components/Actors/3D/PlayerHitboxSpriteProvider3D.cs" id="29_tmq7e"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://bwjrdlnysft15" path="res://Sprites/Actors/Focus_Circle.png" id="30_rikg1"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://bc4tp44e00g0d" path="res://Sprites/Actors/Focus_Square.png" id="31_iw7um"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://bf37ce6jskdel" path="res://Sprites/SmallHitbox.png" id="32_chmen"]
|
||||||
|
[ext_resource type="Script" uid="uid://byiv30s1ahdyh" path="res://Scripts/Components/Actors/3D/PlayerCrosshairModule3D.cs" id="33_iw7um"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cf2855sd3hqty" path="res://Sprites/Actors/Aiming_Reticule_Small.png" id="34_chmen"]
|
||||||
|
|
||||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_fg04g"]
|
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_fg04g"]
|
||||||
radius = 0.349554
|
radius = 0.349554
|
||||||
|
|
@ -132,6 +138,66 @@ metadata/_custom_type_script = "uid://ddsqqfx1usc3j"
|
||||||
[sub_resource type="SphereShape3D" id="SphereShape3D_p313o"]
|
[sub_resource type="SphereShape3D" id="SphereShape3D_p313o"]
|
||||||
radius = 0.0913725
|
radius = 0.0913725
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_n5ijo"]
|
||||||
|
atlas = ExtResource("30_rikg1")
|
||||||
|
region = Rect2(0, 0, 32, 32)
|
||||||
|
|
||||||
|
[sub_resource type="SpriteFrames" id="SpriteFrames_h1heu"]
|
||||||
|
animations = [{
|
||||||
|
"frames": [{
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_n5ijo")
|
||||||
|
}],
|
||||||
|
"loop": true,
|
||||||
|
"name": &"default",
|
||||||
|
"speed": 5.0
|
||||||
|
}]
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_vwjki"]
|
||||||
|
atlas = ExtResource("31_iw7um")
|
||||||
|
region = Rect2(0, 0, 32, 32)
|
||||||
|
|
||||||
|
[sub_resource type="SpriteFrames" id="SpriteFrames_nwocn"]
|
||||||
|
animations = [{
|
||||||
|
"frames": [{
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_vwjki")
|
||||||
|
}],
|
||||||
|
"loop": true,
|
||||||
|
"name": &"default",
|
||||||
|
"speed": 5.0
|
||||||
|
}]
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_igu66"]
|
||||||
|
atlas = ExtResource("32_chmen")
|
||||||
|
region = Rect2(0, 0, 4, 4)
|
||||||
|
|
||||||
|
[sub_resource type="SpriteFrames" id="SpriteFrames_nk07c"]
|
||||||
|
animations = [{
|
||||||
|
"frames": [{
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_igu66")
|
||||||
|
}],
|
||||||
|
"loop": true,
|
||||||
|
"name": &"default",
|
||||||
|
"speed": 5.0
|
||||||
|
}]
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_12erk"]
|
||||||
|
atlas = ExtResource("34_chmen")
|
||||||
|
region = Rect2(0, 0, 16, 16)
|
||||||
|
|
||||||
|
[sub_resource type="SpriteFrames" id="SpriteFrames_gndug"]
|
||||||
|
animations = [{
|
||||||
|
"frames": [{
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_12erk")
|
||||||
|
}],
|
||||||
|
"loop": true,
|
||||||
|
"name": &"default",
|
||||||
|
"speed": 5.0
|
||||||
|
}]
|
||||||
|
|
||||||
[node name="IsoPlayerFsm" type="CharacterBody3D" node_paths=PackedStringArray("PlayerFSM")]
|
[node name="IsoPlayerFsm" type="CharacterBody3D" node_paths=PackedStringArray("PlayerFSM")]
|
||||||
collision_layer = 2
|
collision_layer = 2
|
||||||
collision_mask = 17
|
collision_mask = 17
|
||||||
|
|
@ -150,7 +216,7 @@ _inputProvider = NodePath("../../InputProvider")
|
||||||
AnimationProvider = NodePath("../../AnimationProvider")
|
AnimationProvider = NodePath("../../AnimationProvider")
|
||||||
Storage = NodePath("../../Storage")
|
Storage = NodePath("../../Storage")
|
||||||
DamageReceiver = NodePath("../../DamageReceiver")
|
DamageReceiver = NodePath("../../DamageReceiver")
|
||||||
_moduleNodes = [NodePath("../../InputProvider"), NodePath("../../MovementModule"), NodePath("../../ShadowModule"), NodePath("../../InteractionController"), NodePath("../../ActivationProvider"), NodePath("../../WeaponModule"), NodePath("../../AcidDeathModule")]
|
_moduleNodes = [NodePath("../../InputProvider"), NodePath("../../MovementModule"), NodePath("../../ShadowModule"), NodePath("../../InteractionController"), NodePath("../../ActivationProvider"), NodePath("../../WeaponModule"), NodePath("../../AcidDeathModule"), NodePath("../../CrosshairModule")]
|
||||||
|
|
||||||
[node name="Dead" type="Node" parent="StateMachine"]
|
[node name="Dead" type="Node" parent="StateMachine"]
|
||||||
script = ExtResource("5_ok250")
|
script = ExtResource("5_ok250")
|
||||||
|
|
@ -167,12 +233,12 @@ pixel_size = 0.05
|
||||||
texture_filter = 0
|
texture_filter = 0
|
||||||
sprite_frames = ExtResource("6_yq7h2")
|
sprite_frames = ExtResource("6_yq7h2")
|
||||||
animation = &"idle"
|
animation = &"idle"
|
||||||
frame_progress = 0.1756
|
frame_progress = 0.755868
|
||||||
script = ExtResource("9_yarib")
|
script = ExtResource("9_yarib")
|
||||||
|
|
||||||
[node name="Legs" type="AnimatedSprite3D" parent="AnimationProvider"]
|
[node name="Legs" type="AnimatedSprite3D" parent="AnimationProvider"]
|
||||||
|
transform = Transform3D(0.707107, -0.5, 0.5, 0, 0.707107, 0.707107, -0.707107, -0.5, 0.5, 0, 0, 0)
|
||||||
pixel_size = 0.05
|
pixel_size = 0.05
|
||||||
billboard = 1
|
|
||||||
texture_filter = 0
|
texture_filter = 0
|
||||||
sprite_frames = ExtResource("7_l4f8l")
|
sprite_frames = ExtResource("7_l4f8l")
|
||||||
animation = &"idle"
|
animation = &"idle"
|
||||||
|
|
@ -192,14 +258,15 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.101789, 0)
|
||||||
visible = false
|
visible = false
|
||||||
shape = SubResource("CapsuleShape3D_fg04g")
|
shape = SubResource("CapsuleShape3D_fg04g")
|
||||||
|
|
||||||
[node name="MovementModule" type="Node" parent="." node_paths=PackedStringArray("PlayerStorage", "_inputProvider")]
|
[node name="MovementModule" type="Node" parent="." node_paths=PackedStringArray("PlayerStorage", "_inputProvider", "HitboxSpriteProvider")]
|
||||||
script = ExtResource("5_fg04g")
|
script = ExtResource("5_fg04g")
|
||||||
PlayerStorage = NodePath("../Storage")
|
PlayerStorage = NodePath("../Storage")
|
||||||
_inputProvider = NodePath("../InputProvider")
|
_inputProvider = NodePath("../InputProvider")
|
||||||
Speed = 6
|
HitboxSpriteProvider = NodePath("../StrafeSpriteProvider")
|
||||||
StrafeSpeed = 4
|
Speed = 5
|
||||||
|
StrafeSpeed = 2
|
||||||
Acceleration = 150.0
|
Acceleration = 150.0
|
||||||
Deceleration = 25.0
|
Deceleration = 20.0
|
||||||
Gravity = -50.0
|
Gravity = -50.0
|
||||||
FallSpeed = 100.0
|
FallSpeed = 100.0
|
||||||
|
|
||||||
|
|
@ -309,7 +376,52 @@ ResourceName = "Shield"
|
||||||
_maxResource = 32.0
|
_maxResource = 32.0
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape3D" parent="DamageReceiver"]
|
[node name="CollisionShape2D" type="CollisionShape3D" parent="DamageReceiver"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00122255, -0.00129807, 0.000553966)
|
||||||
shape = SubResource("SphereShape3D_p313o")
|
shape = SubResource("SphereShape3D_p313o")
|
||||||
|
|
||||||
|
[node name="StrafeSpriteProvider" type="Node3D" parent="." node_paths=PackedStringArray("Hitbox", "Circle", "Square")]
|
||||||
|
script = ExtResource("29_tmq7e")
|
||||||
|
Hitbox = NodePath("Hitbox")
|
||||||
|
Circle = NodePath("MagicCircle")
|
||||||
|
Square = NodePath("MagicSquare")
|
||||||
|
RotationSpeed = 1.0
|
||||||
|
|
||||||
|
[node name="MagicCircle" type="AnimatedSprite3D" parent="StrafeSpriteProvider"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, -0.3, 0)
|
||||||
|
modulate = Color(1, 1, 1, 0.501961)
|
||||||
|
pixel_size = 0.05
|
||||||
|
texture_filter = 0
|
||||||
|
render_priority = -1
|
||||||
|
sprite_frames = SubResource("SpriteFrames_h1heu")
|
||||||
|
|
||||||
|
[node name="MagicSquare" type="AnimatedSprite3D" parent="StrafeSpriteProvider"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, -0.3, 0)
|
||||||
|
modulate = Color(1, 1, 1, 0.501961)
|
||||||
|
pixel_size = 0.05
|
||||||
|
texture_filter = 0
|
||||||
|
render_priority = -1
|
||||||
|
sprite_frames = SubResource("SpriteFrames_nwocn")
|
||||||
|
|
||||||
|
[node name="Hitbox" type="AnimatedSprite3D" parent="StrafeSpriteProvider"]
|
||||||
|
pixel_size = 0.05
|
||||||
|
billboard = 1
|
||||||
|
texture_filter = 0
|
||||||
|
render_priority = 1
|
||||||
|
sprite_frames = SubResource("SpriteFrames_nk07c")
|
||||||
|
|
||||||
|
[node name="CrosshairModule" type="Node3D" parent="." node_paths=PackedStringArray("Storage", "AnimatedSprite")]
|
||||||
|
script = ExtResource("33_iw7um")
|
||||||
|
Storage = NodePath("../Storage")
|
||||||
|
AnimatedSprite = NodePath("Crosshair")
|
||||||
|
CrosshairDistance = 2.0
|
||||||
|
|
||||||
|
[node name="Crosshair" type="AnimatedSprite3D" parent="CrosshairModule"]
|
||||||
|
transform = Transform3D(0.707107, -0.5, 0.5, 0, 0.707107, 0.707107, -0.707107, -0.5, 0.5, 0, 0, 0)
|
||||||
|
pixel_size = 0.05
|
||||||
|
no_depth_test = true
|
||||||
|
texture_filter = 0
|
||||||
|
render_priority = 1
|
||||||
|
sprite_frames = SubResource("SpriteFrames_gndug")
|
||||||
|
|
||||||
[connection signal="area_entered" from="AcidDetector" to="AcidDeathModule" method="OnAcidCollision"]
|
[connection signal="area_entered" from="AcidDetector" to="AcidDeathModule" method="OnAcidCollision"]
|
||||||
[connection signal="area_entered" from="DamageReceiver" to="DamageReceiver" method="_on_damage_hitbox_area_entered"]
|
[connection signal="area_entered" from="DamageReceiver" to="DamageReceiver" method="_on_damage_hitbox_area_entered"]
|
||||||
|
|
|
||||||
70
Scripts/Components/Actors/3D/PlayerCrosshairModule3D.cs
Normal file
70
Scripts/Components/Actors/3D/PlayerCrosshairModule3D.cs
Normal file
|
|
@ -0,0 +1,70 @@
|
||||||
|
using Cirno.Scripts.Components.FSM;
|
||||||
|
using Cirno.Scripts.Components.FSM._3DPlayer;
|
||||||
|
using Cirno.Scripts.Components.FSM.Player;
|
||||||
|
using Cirno.Scripts.Utils;
|
||||||
|
using Godot;
|
||||||
|
|
||||||
|
namespace Cirno.Scripts.Components.Actors._3D;
|
||||||
|
|
||||||
|
public partial class PlayerCrosshairModule3D : ModuleBase<PlayerState, CharacterBody3D>
|
||||||
|
{
|
||||||
|
[Export] public IsoPlayerStorageModule Storage { get; set; }
|
||||||
|
[Export]
|
||||||
|
public AnimatedSprite3D AnimatedSprite { get; private set; }
|
||||||
|
|
||||||
|
[Export]
|
||||||
|
public float CrosshairDistance { get; private set; }
|
||||||
|
|
||||||
|
public bool Enabled { get; set; } = false;
|
||||||
|
|
||||||
|
private IStateMachine<PlayerState, CharacterBody3D> _machine;
|
||||||
|
|
||||||
|
public void UpdatePosition(Vector2 facingDirection)
|
||||||
|
{
|
||||||
|
AnimatedSprite.Position = CalculateCrosshairPosition(facingDirection);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Vector3 CalculateCrosshairPosition(Vector2 facingDirection)
|
||||||
|
{
|
||||||
|
var pos2d = facingDirection * CrosshairDistance;
|
||||||
|
|
||||||
|
var pos3d = pos2d.ToVector3(0);
|
||||||
|
|
||||||
|
return pos3d;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void EnterState(PlayerState state)
|
||||||
|
{
|
||||||
|
Enabled = true;
|
||||||
|
AnimatedSprite.Show();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void ExitState(PlayerState state)
|
||||||
|
{
|
||||||
|
Enabled = false;
|
||||||
|
AnimatedSprite.Hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void _Ready()
|
||||||
|
{
|
||||||
|
AnimatedSprite.Hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Init(IStateMachine<PlayerState, CharacterBody3D> machine)
|
||||||
|
{
|
||||||
|
_machine = machine;
|
||||||
|
AnimatedSprite.Hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Process(double delta)
|
||||||
|
{
|
||||||
|
if (!Enabled) return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void PhysicsProcess(double delta)
|
||||||
|
{
|
||||||
|
if (!Enabled) return;
|
||||||
|
AnimatedSprite.Position = CalculateCrosshairPosition(Storage.FacingDirection);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
uid://byiv30s1ahdyh
|
||||||
35
Scripts/Components/Actors/3D/PlayerHitboxSpriteProvider3D.cs
Normal file
35
Scripts/Components/Actors/3D/PlayerHitboxSpriteProvider3D.cs
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
using Godot;
|
||||||
|
|
||||||
|
namespace Cirno.Scripts.Components.Actors._3D;
|
||||||
|
|
||||||
|
public partial class PlayerHitboxSpriteProvider3D : Node3D
|
||||||
|
{
|
||||||
|
[Export]
|
||||||
|
public AnimatedSprite3D Hitbox { get; private set; }
|
||||||
|
[Export]
|
||||||
|
public AnimatedSprite3D Circle { get; private set; }
|
||||||
|
[Export]
|
||||||
|
public AnimatedSprite3D Square { get; private set; }
|
||||||
|
|
||||||
|
[Export] public float RotationSpeed { get; private set; } = 10f;
|
||||||
|
|
||||||
|
public override void _Process(double delta)
|
||||||
|
{
|
||||||
|
if (!Visible) return;
|
||||||
|
Circle.Rotate(Vector3.Up, (float)(RotationSpeed * delta));
|
||||||
|
Square.Rotate(Vector3.Up, (float)(-RotationSpeed * delta));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetVisibility(bool isVisible)
|
||||||
|
{
|
||||||
|
if (isVisible == Visible) return;
|
||||||
|
if (isVisible)
|
||||||
|
{
|
||||||
|
Show();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
uid://b2cqsoywem26t
|
||||||
|
|
@ -17,6 +17,8 @@ public partial class Active : BaseState<PlayerState, CharacterBody3D>
|
||||||
|
|
||||||
[Export] public PlayerDamageReceiver3D DamageReceiver { get; private set; }
|
[Export] public PlayerDamageReceiver3D DamageReceiver { get; private set; }
|
||||||
|
|
||||||
|
//[Export] public PlayerHitboxSpriteProvider3D HitboxSpriteProvider { get; private set; }
|
||||||
|
|
||||||
public override void Init(IStateMachine<PlayerState, CharacterBody3D> machine)
|
public override void Init(IStateMachine<PlayerState, CharacterBody3D> machine)
|
||||||
{
|
{
|
||||||
base.Init(machine);
|
base.Init(machine);
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
using Cirno.Scripts.Components.Actors;
|
using Cirno.Scripts.Components.Actors;
|
||||||
|
using Cirno.Scripts.Components.Actors._3D;
|
||||||
using Godot;
|
using Godot;
|
||||||
|
|
||||||
namespace Cirno.Scripts.Components.FSM._3DPlayer;
|
namespace Cirno.Scripts.Components.FSM._3DPlayer;
|
||||||
|
|
@ -8,6 +9,8 @@ public partial class IsoMovementModule : ModuleBase<PlayerState, CharacterBody3D
|
||||||
[Export] public IsoPlayerStorageModule PlayerStorage { get; private set; }
|
[Export] public IsoPlayerStorageModule PlayerStorage { get; private set; }
|
||||||
[Export] private InputProvider _inputProvider;
|
[Export] private InputProvider _inputProvider;
|
||||||
|
|
||||||
|
[Export] public PlayerHitboxSpriteProvider3D HitboxSpriteProvider { get; private set; }
|
||||||
|
|
||||||
[Export] public int Speed { get; set; } = 45;
|
[Export] public int Speed { get; set; } = 45;
|
||||||
[Export] public int StrafeSpeed { get; set; } = 35;
|
[Export] public int StrafeSpeed { get; set; } = 35;
|
||||||
[Export] public float Acceleration = 8f;
|
[Export] public float Acceleration = 8f;
|
||||||
|
|
@ -65,6 +68,8 @@ public partial class IsoMovementModule : ModuleBase<PlayerState, CharacterBody3D
|
||||||
var rotatedMovementDirection = movementInput.Rotated(Mathf.DegToRad(-45f));
|
var rotatedMovementDirection = movementInput.Rotated(Mathf.DegToRad(-45f));
|
||||||
|
|
||||||
PlayerStorage.MovementDirection = new Vector3(rotatedMovementDirection.X, 0, rotatedMovementDirection.Y);
|
PlayerStorage.MovementDirection = new Vector3(rotatedMovementDirection.X, 0, rotatedMovementDirection.Y);
|
||||||
|
|
||||||
|
HitboxSpriteProvider.SetVisibility(_isStrafing);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void PhysicsProcess(double delta)
|
public override void PhysicsProcess(double delta)
|
||||||
|
|
|
||||||
|
|
@ -3,25 +3,26 @@
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://cf2855sd3hqty"
|
uid="uid://cf2855sd3hqty"
|
||||||
path="res://.godot/imported/Aiming_Reticule_Small.png-3a64498ab624b147ab0d0983d029730f.ctex"
|
path.s3tc="res://.godot/imported/Aiming_Reticule_Small.png-3a64498ab624b147ab0d0983d029730f.s3tc.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"vram_texture": false
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://Sprites/Actors/Aiming_Reticule_Small.png"
|
source_file="res://Sprites/Actors/Aiming_Reticule_Small.png"
|
||||||
dest_files=["res://.godot/imported/Aiming_Reticule_Small.png-3a64498ab624b147ab0d0983d029730f.ctex"]
|
dest_files=["res://.godot/imported/Aiming_Reticule_Small.png-3a64498ab624b147ab0d0983d029730f.s3tc.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
compress/mode=0
|
compress/mode=2
|
||||||
compress/high_quality=false
|
compress/high_quality=false
|
||||||
compress/lossy_quality=0.7
|
compress/lossy_quality=0.7
|
||||||
compress/hdr_compression=1
|
compress/hdr_compression=1
|
||||||
compress/normal_map=0
|
compress/normal_map=0
|
||||||
compress/channel_pack=0
|
compress/channel_pack=0
|
||||||
mipmaps/generate=false
|
mipmaps/generate=true
|
||||||
mipmaps/limit=-1
|
mipmaps/limit=-1
|
||||||
roughness/mode=0
|
roughness/mode=0
|
||||||
roughness/src_normal=""
|
roughness/src_normal=""
|
||||||
|
|
@ -31,4 +32,4 @@ process/normal_map_invert_y=false
|
||||||
process/hdr_as_srgb=false
|
process/hdr_as_srgb=false
|
||||||
process/hdr_clamp_exposure=false
|
process/hdr_clamp_exposure=false
|
||||||
process/size_limit=0
|
process/size_limit=0
|
||||||
detect_3d/compress_to=1
|
detect_3d/compress_to=0
|
||||||
|
|
|
||||||
|
|
@ -3,25 +3,26 @@
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://bwjrdlnysft15"
|
uid="uid://bwjrdlnysft15"
|
||||||
path="res://.godot/imported/Focus_Circle.png-86ca500c18cc9b51128617925453c9df.ctex"
|
path.s3tc="res://.godot/imported/Focus_Circle.png-86ca500c18cc9b51128617925453c9df.s3tc.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"vram_texture": false
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://Sprites/Actors/Focus_Circle.png"
|
source_file="res://Sprites/Actors/Focus_Circle.png"
|
||||||
dest_files=["res://.godot/imported/Focus_Circle.png-86ca500c18cc9b51128617925453c9df.ctex"]
|
dest_files=["res://.godot/imported/Focus_Circle.png-86ca500c18cc9b51128617925453c9df.s3tc.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
compress/mode=0
|
compress/mode=2
|
||||||
compress/high_quality=false
|
compress/high_quality=false
|
||||||
compress/lossy_quality=0.7
|
compress/lossy_quality=0.7
|
||||||
compress/hdr_compression=1
|
compress/hdr_compression=1
|
||||||
compress/normal_map=0
|
compress/normal_map=0
|
||||||
compress/channel_pack=0
|
compress/channel_pack=0
|
||||||
mipmaps/generate=false
|
mipmaps/generate=true
|
||||||
mipmaps/limit=-1
|
mipmaps/limit=-1
|
||||||
roughness/mode=0
|
roughness/mode=0
|
||||||
roughness/src_normal=""
|
roughness/src_normal=""
|
||||||
|
|
@ -31,4 +32,4 @@ process/normal_map_invert_y=false
|
||||||
process/hdr_as_srgb=false
|
process/hdr_as_srgb=false
|
||||||
process/hdr_clamp_exposure=false
|
process/hdr_clamp_exposure=false
|
||||||
process/size_limit=0
|
process/size_limit=0
|
||||||
detect_3d/compress_to=1
|
detect_3d/compress_to=0
|
||||||
|
|
|
||||||
|
|
@ -3,25 +3,26 @@
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://bc4tp44e00g0d"
|
uid="uid://bc4tp44e00g0d"
|
||||||
path="res://.godot/imported/Focus_Square.png-b4bb48d5fd73952480ca8cfacec16844.ctex"
|
path.s3tc="res://.godot/imported/Focus_Square.png-b4bb48d5fd73952480ca8cfacec16844.s3tc.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"vram_texture": false
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://Sprites/Actors/Focus_Square.png"
|
source_file="res://Sprites/Actors/Focus_Square.png"
|
||||||
dest_files=["res://.godot/imported/Focus_Square.png-b4bb48d5fd73952480ca8cfacec16844.ctex"]
|
dest_files=["res://.godot/imported/Focus_Square.png-b4bb48d5fd73952480ca8cfacec16844.s3tc.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
compress/mode=0
|
compress/mode=2
|
||||||
compress/high_quality=false
|
compress/high_quality=false
|
||||||
compress/lossy_quality=0.7
|
compress/lossy_quality=0.7
|
||||||
compress/hdr_compression=1
|
compress/hdr_compression=1
|
||||||
compress/normal_map=0
|
compress/normal_map=0
|
||||||
compress/channel_pack=0
|
compress/channel_pack=0
|
||||||
mipmaps/generate=false
|
mipmaps/generate=true
|
||||||
mipmaps/limit=-1
|
mipmaps/limit=-1
|
||||||
roughness/mode=0
|
roughness/mode=0
|
||||||
roughness/src_normal=""
|
roughness/src_normal=""
|
||||||
|
|
@ -31,4 +32,4 @@ process/normal_map_invert_y=false
|
||||||
process/hdr_as_srgb=false
|
process/hdr_as_srgb=false
|
||||||
process/hdr_clamp_exposure=false
|
process/hdr_clamp_exposure=false
|
||||||
process/size_limit=0
|
process/size_limit=0
|
||||||
detect_3d/compress_to=1
|
detect_3d/compress_to=0
|
||||||
|
|
|
||||||
|
|
@ -3,25 +3,26 @@
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://bf37ce6jskdel"
|
uid="uid://bf37ce6jskdel"
|
||||||
path="res://.godot/imported/SmallHitbox.png-03b8e18b0a68a463319a17855b03e809.ctex"
|
path.s3tc="res://.godot/imported/SmallHitbox.png-03b8e18b0a68a463319a17855b03e809.s3tc.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"vram_texture": false
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://Sprites/SmallHitbox.png"
|
source_file="res://Sprites/SmallHitbox.png"
|
||||||
dest_files=["res://.godot/imported/SmallHitbox.png-03b8e18b0a68a463319a17855b03e809.ctex"]
|
dest_files=["res://.godot/imported/SmallHitbox.png-03b8e18b0a68a463319a17855b03e809.s3tc.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
compress/mode=0
|
compress/mode=2
|
||||||
compress/high_quality=false
|
compress/high_quality=false
|
||||||
compress/lossy_quality=0.7
|
compress/lossy_quality=0.7
|
||||||
compress/hdr_compression=1
|
compress/hdr_compression=1
|
||||||
compress/normal_map=0
|
compress/normal_map=0
|
||||||
compress/channel_pack=0
|
compress/channel_pack=0
|
||||||
mipmaps/generate=false
|
mipmaps/generate=true
|
||||||
mipmaps/limit=-1
|
mipmaps/limit=-1
|
||||||
roughness/mode=0
|
roughness/mode=0
|
||||||
roughness/src_normal=""
|
roughness/src_normal=""
|
||||||
|
|
@ -31,4 +32,4 @@ process/normal_map_invert_y=false
|
||||||
process/hdr_as_srgb=false
|
process/hdr_as_srgb=false
|
||||||
process/hdr_clamp_exposure=false
|
process/hdr_clamp_exposure=false
|
||||||
process/size_limit=0
|
process/size_limit=0
|
||||||
detect_3d/compress_to=1
|
detect_3d/compress_to=0
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue