Partial Completion of Tutorial
This commit is contained in:
parent
0bee2ee47b
commit
cd0f25c73b
6 changed files with 517 additions and 6 deletions
4
.idea/.idea.PokemonLike/.idea/vcs.xml
generated
4
.idea/.idea.PokemonLike/.idea/vcs.xml
generated
|
|
@ -1,4 +1,6 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="VcsDirectoryMappings" defaultProject="true" />
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="" vcs="Git" />
|
||||||
|
</component>
|
||||||
</project>
|
</project>
|
||||||
40
Library/Characters/CharacterCollisionRayCast.cs
Normal file
40
Library/Characters/CharacterCollisionRayCast.cs
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
using Godot;
|
||||||
|
using PokemonLike.Library.Support;
|
||||||
|
|
||||||
|
namespace PokemonLike.Library.Characters;
|
||||||
|
|
||||||
|
[GlobalClass]
|
||||||
|
public partial class CharacterCollisionRayCast : RayCast2D
|
||||||
|
{
|
||||||
|
[Signal] public delegate void CollisionEventHandler(bool collided);
|
||||||
|
|
||||||
|
[ExportCategory("Collision Vars")] [Export]
|
||||||
|
public CharacterInput CharacterInput;
|
||||||
|
[Export] public GodotObject Collider;
|
||||||
|
|
||||||
|
public override void _Ready()
|
||||||
|
{
|
||||||
|
Logger.Info("Loading character collision raycast ...");
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void _Process(double delta)
|
||||||
|
{
|
||||||
|
if (TargetPosition != CharacterInput.TargetPosition)
|
||||||
|
TargetPosition = CharacterInput.TargetPosition;
|
||||||
|
|
||||||
|
if (IsColliding())
|
||||||
|
{
|
||||||
|
Collider = GetCollider();
|
||||||
|
string colliderType = Collider.GetType().Name;
|
||||||
|
switch (colliderType)
|
||||||
|
{
|
||||||
|
|
||||||
|
default:
|
||||||
|
EmitSignal(SignalName.Collision, true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
EmitSignal(SignalName.Collision, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
1
Library/Characters/CharacterCollisionRayCast.cs.uid
Normal file
1
Library/Characters/CharacterCollisionRayCast.cs.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://eadca5ac4oeu
|
||||||
|
|
@ -13,17 +13,20 @@ public partial class CharacterMovement : Node
|
||||||
[ExportCategory("Nodes")]
|
[ExportCategory("Nodes")]
|
||||||
[Export] public CharacterBody2D Character;
|
[Export] public CharacterBody2D Character;
|
||||||
[Export] public CharacterInput CharacterInput;
|
[Export] public CharacterInput CharacterInput;
|
||||||
|
[Export] public CharacterCollisionRayCast CharacterCollisionRayCast;
|
||||||
|
|
||||||
[ExportCategory("Movement")]
|
[ExportCategory("Movement")]
|
||||||
[Export] public Vector2 TargetPosition = Vector2.Zero;
|
[Export] public Vector2 TargetPosition = Vector2.Zero;
|
||||||
[Export] public bool IsWalking = false;
|
[Export] public bool IsWalking = false;
|
||||||
|
[Export] public bool CollisionDetected = false;
|
||||||
|
|
||||||
|
|
||||||
public override void _Ready()
|
public override void _Ready()
|
||||||
{
|
{
|
||||||
CharacterInput.Walk += StartWalking;
|
CharacterInput.Walk += StartWalking;
|
||||||
CharacterInput.Turn += Turn;
|
CharacterInput.Turn += Turn;
|
||||||
Logger.Info("Loading player movement component ...");
|
CharacterCollisionRayCast.Collision += (value) => CollisionDetected = value;
|
||||||
|
Logger.Info("Loading character movement component ...");
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void _Process(double delta)
|
public override void _Process(double delta)
|
||||||
|
|
@ -33,9 +36,11 @@ public partial class CharacterMovement : Node
|
||||||
|
|
||||||
public bool IsMoving() => IsWalking;
|
public bool IsMoving() => IsWalking;
|
||||||
|
|
||||||
|
public bool IsColliding() => CollisionDetected;
|
||||||
|
|
||||||
public void StartWalking()
|
public void StartWalking()
|
||||||
{
|
{
|
||||||
if (!IsMoving())
|
if (!IsMoving() && !IsColliding())
|
||||||
{
|
{
|
||||||
EmitSignal(SignalName.Animation, "walk");
|
EmitSignal(SignalName.Animation, "walk");
|
||||||
TargetPosition = Character.Position + CharacterInput.Direction * Globals.Instance.GRID_SIZE;
|
TargetPosition = Character.Position + CharacterInput.Direction * Globals.Instance.GRID_SIZE;
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,4 +1,4 @@
|
||||||
[gd_scene load_steps=38 format=3 uid="uid://b6p8tudwratl1"]
|
[gd_scene load_steps=39 format=3 uid="uid://b6p8tudwratl1"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://b70ubhqc16nw4" path="res://Library/Characters/PlayerInput.cs" id="1_40svl"]
|
[ext_resource type="Script" uid="uid://b70ubhqc16nw4" path="res://Library/Characters/PlayerInput.cs" id="1_40svl"]
|
||||||
[ext_resource type="Script" uid="uid://b4thjem54fyfl" path="res://Library/Characters/Player.cs" id="1_utp2y"]
|
[ext_resource type="Script" uid="uid://b4thjem54fyfl" path="res://Library/Characters/Player.cs" id="1_utp2y"]
|
||||||
|
|
@ -6,6 +6,7 @@
|
||||||
[ext_resource type="Script" uid="uid://bytos0ecojls1" path="res://Library/Characters/CharacterMovement.cs" id="2_al8ar"]
|
[ext_resource type="Script" uid="uid://bytos0ecojls1" path="res://Library/Characters/CharacterMovement.cs" id="2_al8ar"]
|
||||||
[ext_resource type="Script" uid="uid://bfijr6flufatm" path="res://Library/Characters/CharacterAnimation.cs" id="4_gy20a"]
|
[ext_resource type="Script" uid="uid://bfijr6flufatm" path="res://Library/Characters/CharacterAnimation.cs" id="4_gy20a"]
|
||||||
[ext_resource type="Script" uid="uid://dxo0eunwolubm" path="res://Library/Utilities/StateMachine.cs" id="5_cqrjx"]
|
[ext_resource type="Script" uid="uid://dxo0eunwolubm" path="res://Library/Utilities/StateMachine.cs" id="5_cqrjx"]
|
||||||
|
[ext_resource type="Script" uid="uid://eadca5ac4oeu" path="res://Library/Characters/CharacterCollisionRayCast.cs" id="6_gdgf0"]
|
||||||
[ext_resource type="Script" uid="uid://c5nu12q4or8pw" path="res://Library/Characters/States/PlayerRoamState.cs" id="6_khnq4"]
|
[ext_resource type="Script" uid="uid://c5nu12q4or8pw" path="res://Library/Characters/States/PlayerRoamState.cs" id="6_khnq4"]
|
||||||
|
|
||||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_cvnsp"]
|
[sub_resource type="RectangleShape2D" id="RectangleShape2D_cvnsp"]
|
||||||
|
|
@ -281,10 +282,11 @@ shape = SubResource("RectangleShape2D_cvnsp")
|
||||||
[node name="Input" type="Node" parent="."]
|
[node name="Input" type="Node" parent="."]
|
||||||
script = ExtResource("1_40svl")
|
script = ExtResource("1_40svl")
|
||||||
|
|
||||||
[node name="Movement" type="Node" parent="." node_paths=PackedStringArray("Character", "CharacterInput")]
|
[node name="Movement" type="Node" parent="." node_paths=PackedStringArray("Character", "CharacterInput", "CharacterCollisionRayCast")]
|
||||||
script = ExtResource("2_al8ar")
|
script = ExtResource("2_al8ar")
|
||||||
Character = NodePath("..")
|
Character = NodePath("..")
|
||||||
CharacterInput = NodePath("../Input")
|
CharacterInput = NodePath("../Input")
|
||||||
|
CharacterCollisionRayCast = NodePath("../CollisionRayCast")
|
||||||
|
|
||||||
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." node_paths=PackedStringArray("CharacterInput", "CharacterMovement")]
|
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." node_paths=PackedStringArray("CharacterInput", "CharacterMovement")]
|
||||||
position = Vector2(8, 4)
|
position = Vector2(8, 4)
|
||||||
|
|
@ -300,10 +302,12 @@ position = Vector2(8, 8)
|
||||||
zoom = Vector2(3, 3)
|
zoom = Vector2(3, 3)
|
||||||
position_smoothing_enabled = true
|
position_smoothing_enabled = true
|
||||||
|
|
||||||
[node name="CollisionRayCast" type="RayCast2D" parent="."]
|
[node name="CollisionRayCast" type="RayCast2D" parent="." node_paths=PackedStringArray("CharacterInput")]
|
||||||
position = Vector2(8, 8)
|
position = Vector2(8, 8)
|
||||||
target_position = Vector2(0, 16)
|
target_position = Vector2(0, 16)
|
||||||
collide_with_areas = true
|
collide_with_areas = true
|
||||||
|
script = ExtResource("6_gdgf0")
|
||||||
|
CharacterInput = NodePath("../Input")
|
||||||
|
|
||||||
[node name="StateMachine" type="Node" parent="." node_paths=PackedStringArray("Customer")]
|
[node name="StateMachine" type="Node" parent="." node_paths=PackedStringArray("Customer")]
|
||||||
script = ExtResource("5_cqrjx")
|
script = ExtResource("5_cqrjx")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue