this is so easy to develop there must be a catch
This commit is contained in:
@@ -67,7 +67,9 @@ public partial class PlayerController : CharacterBody3D,
|
||||
public RayCast3D DirectGroundDetector;
|
||||
public Area3D WeaponHitbox;
|
||||
public AudioStreamPlayer3D SfxPlayer;
|
||||
|
||||
public ShapeCast3D DashDamageDetector;
|
||||
public Area3D SlidingEnemyDetector;
|
||||
|
||||
// Inspector stuff
|
||||
[Export] public Marker3D TutorialWeaponTarget;
|
||||
@@ -393,6 +395,7 @@ public partial class PlayerController : CharacterBody3D,
|
||||
CeilingDetector = GetNode<ShapeCast3D>("CeilingDetector");
|
||||
DirectGroundDetector = GetNode<RayCast3D>("DirectGroundDetector");
|
||||
DashDamageDetector = GetNode<ShapeCast3D>("DashDamage");
|
||||
SlidingEnemyDetector = GetNode<Area3D>("SlidingEnemyDetector");
|
||||
RayCast3D stairsBelowRayCast3D = GetNode<RayCast3D>("StairsBelowRayCast3D");
|
||||
RayCast3D stairsAheadRayCast3D = GetNode<RayCast3D>("StairsAheadRayCast3D");
|
||||
_headCollisionDetectors = new RayCast3D[NUM_OF_HEAD_COLLISION_DETECTORS];
|
||||
@@ -547,6 +550,7 @@ public partial class PlayerController : CharacterBody3D,
|
||||
|
||||
_weaponDash.StateExited += OnWeaponDashFinished;
|
||||
|
||||
SlidingEnemyDetector.BodyEntered += EnemyHitWhileSliding;
|
||||
_sliding.StateEntered += SlideStarted;
|
||||
_sliding.StateExited += SlideEnded;
|
||||
_slideCanceled.StateEntered += OnSlideCanceled;
|
||||
@@ -1413,8 +1417,11 @@ public partial class PlayerController : CharacterBody3D,
|
||||
public void SlideStarted()
|
||||
{
|
||||
_targetSpeed = Velocity.Length();
|
||||
SetupSlideCollision();
|
||||
_audioStream!.SwitchToClipByName("glide");
|
||||
SetupSlideCollision();
|
||||
|
||||
SlidingEnemyDetector.Monitoring = true;
|
||||
_isInvincible = true;
|
||||
}
|
||||
|
||||
public bool CanStandUpFromSlide()
|
||||
@@ -1540,11 +1547,22 @@ public partial class PlayerController : CharacterBody3D,
|
||||
}
|
||||
public void SlideEnded()
|
||||
{
|
||||
_audioStream!.SwitchToClipByName("footsteps");
|
||||
SlidingEnemyDetector.Monitoring = false;
|
||||
_isInvincible = false;
|
||||
|
||||
SetupStandingCollision();
|
||||
_audioStream!.SwitchToClipByName("footsteps");
|
||||
_targetSpeed = WalkSpeed;
|
||||
}
|
||||
|
||||
public void EnemyHitWhileSliding(Node enemy)
|
||||
{
|
||||
if(enemy is not IDamageable damageable)
|
||||
return;
|
||||
_hitEnemies.Add(damageable);
|
||||
TriggerDamage();
|
||||
}
|
||||
|
||||
public void JumpFromGroundSlide()
|
||||
{
|
||||
_jumpStrengthMultiplier = GroundSlideJumpMultiplier + Velocity.Length()*GroundSlideJumpSpeedFactor;
|
||||
|
||||
Reference in New Issue
Block a user