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"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings" defaultProject="true" />
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="" vcs="Git" />
|
||||
</component>
|
||||
</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")]
|
||||
[Export] public CharacterBody2D Character;
|
||||
[Export] public CharacterInput CharacterInput;
|
||||
[Export] public CharacterCollisionRayCast CharacterCollisionRayCast;
|
||||
|
||||
[ExportCategory("Movement")]
|
||||
[Export] public Vector2 TargetPosition = Vector2.Zero;
|
||||
[Export] public bool IsWalking = false;
|
||||
[Export] public bool CollisionDetected = false;
|
||||
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
CharacterInput.Walk += StartWalking;
|
||||
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)
|
||||
|
|
@ -33,9 +36,11 @@ public partial class CharacterMovement : Node
|
|||
|
||||
public bool IsMoving() => IsWalking;
|
||||
|
||||
public bool IsColliding() => CollisionDetected;
|
||||
|
||||
public void StartWalking()
|
||||
{
|
||||
if (!IsMoving())
|
||||
if (!IsMoving() && !IsColliding())
|
||||
{
|
||||
EmitSignal(SignalName.Animation, "walk");
|
||||
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://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://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://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"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_cvnsp"]
|
||||
|
|
@ -281,10 +282,11 @@ shape = SubResource("RectangleShape2D_cvnsp")
|
|||
[node name="Input" type="Node" parent="."]
|
||||
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")
|
||||
Character = NodePath("..")
|
||||
CharacterInput = NodePath("../Input")
|
||||
CharacterCollisionRayCast = NodePath("../CollisionRayCast")
|
||||
|
||||
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." node_paths=PackedStringArray("CharacterInput", "CharacterMovement")]
|
||||
position = Vector2(8, 4)
|
||||
|
|
@ -300,10 +302,12 @@ position = Vector2(8, 8)
|
|||
zoom = Vector2(3, 3)
|
||||
position_smoothing_enabled = true
|
||||
|
||||
[node name="CollisionRayCast" type="RayCast2D" parent="."]
|
||||
[node name="CollisionRayCast" type="RayCast2D" parent="." node_paths=PackedStringArray("CharacterInput")]
|
||||
position = Vector2(8, 8)
|
||||
target_position = Vector2(0, 16)
|
||||
collide_with_areas = true
|
||||
script = ExtResource("6_gdgf0")
|
||||
CharacterInput = NodePath("../Input")
|
||||
|
||||
[node name="StateMachine" type="Node" parent="." node_paths=PackedStringArray("Customer")]
|
||||
script = ExtResource("5_cqrjx")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue