Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 27130257c9 | |||
| e70a2e7537 |
Binary file not shown.
Binary file not shown.
@@ -63,7 +63,7 @@ WalkSpeed = 7.5
|
||||
AccelerationAir = 2.0
|
||||
DecelerationAir = 0.1
|
||||
Weight = 5.0
|
||||
MantleTime = 0.2
|
||||
MantleTime = 0.3
|
||||
SimpleJumpStartVelocity = 8.0
|
||||
SimpleJumpHangTimeInFrames = 1
|
||||
SimpleJumpGravityLesseningFactor = 2.5
|
||||
|
||||
@@ -823,6 +823,8 @@ public partial class PlayerController : CharacterBody3D
|
||||
_playerState.SendEvent(resultingEvent);
|
||||
}
|
||||
|
||||
private Vector3 _preDashVelocity = Vector3.Zero;
|
||||
|
||||
public void OnAimedDashStarted()
|
||||
{
|
||||
// Adjusting for player height, where the middle of the capsule should get to the dash location instead of the
|
||||
@@ -830,6 +832,9 @@ public partial class PlayerController : CharacterBody3D
|
||||
var correction = DashSystem.CollisionNormal == Vector3.Down ? _playerHeight : DashSystem.DashCastRadius;
|
||||
var correctedLocation = DashSystem.PlannedLocation + Vector3.Down * correction;
|
||||
|
||||
_preDashVelocity = Velocity;
|
||||
_dashDirection = (correctedLocation - GlobalPosition).Normalized();
|
||||
|
||||
var dashTween = CreatePositionTween(correctedLocation, AimedDashTime);
|
||||
// dashTween.TweenMethod(Callable.From<float>(AimedDashTweenOngoing), 0.0f, 1.0f, AimedDashTime);
|
||||
dashTween.Finished += AimedDashTweenEnded;
|
||||
@@ -880,6 +885,9 @@ public partial class PlayerController : CharacterBody3D
|
||||
|
||||
public void OnAimedDashFinished()
|
||||
{
|
||||
var postDashVelocity = _preDashVelocity.Length() > PostDashSpeed ? PostDashSpeed : _preDashVelocity.Length();
|
||||
Velocity = _dashDirection * postDashVelocity;
|
||||
|
||||
if (_shouldMantleOnDashEnded)
|
||||
MantleToLocation(_mantleLocation);
|
||||
}
|
||||
@@ -922,8 +930,8 @@ public partial class PlayerController : CharacterBody3D
|
||||
public void OnPoweredDashFinished()
|
||||
{
|
||||
// Try mantling but don't know if this is useful
|
||||
if (CanMantle())
|
||||
MantleToLocation(MantleSystem.FindMantleForHeadRotation(HeadSystem.Rotation.Y).Unwrap());
|
||||
// if (CanMantle())
|
||||
// MantleToLocation(MantleSystem.FindMantleForHeadRotation(HeadSystem.Rotation.Y).Unwrap());
|
||||
}
|
||||
|
||||
public void FinishPoweredDash()
|
||||
@@ -967,13 +975,19 @@ public partial class PlayerController : CharacterBody3D
|
||||
var mantleLocationResult = MantleSystem.FindMantleForHeadRotation(HeadSystem.Rotation.Y);
|
||||
return mantleLocationResult.IsSome(out _);
|
||||
}
|
||||
|
||||
private Vector3 _preMantleVelocity = Vector3.Zero;
|
||||
public void MantleToLocation(Vector3 location)
|
||||
{
|
||||
HeadSystem.OnMantle();
|
||||
|
||||
_preMantleVelocity = Velocity;
|
||||
var mantleTween = CreatePositionTween(location, MantleTime);
|
||||
mantleTween.Finished += MantleFinished;
|
||||
}
|
||||
public void MantleFinished()
|
||||
{
|
||||
Velocity = _preMantleVelocity;
|
||||
_playerState.SendEvent("grounded");
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ public partial class HeadSystem : Node3D
|
||||
{
|
||||
private Camera3D _camera;
|
||||
private Marker3D _cameraAnchor;
|
||||
private AnimationPlayer _animationPlayer;
|
||||
|
||||
[Export(PropertyHint.Range, "0,10,0.1,or_greater")]
|
||||
public float LookSensitivity { get; set; } = 1f;
|
||||
@@ -16,6 +17,12 @@ public partial class HeadSystem : Node3D
|
||||
Input.SetMouseMode(Input.MouseModeEnum.Captured);
|
||||
_camera = GetNode<Camera3D>("CameraSmooth/Camera3D");
|
||||
_cameraAnchor = GetNode<Marker3D>("CameraAnchor");
|
||||
_animationPlayer = GetNode<AnimationPlayer>("AnimationPlayer");
|
||||
}
|
||||
|
||||
public void OnMantle()
|
||||
{
|
||||
_animationPlayer.Play("mantle");
|
||||
}
|
||||
|
||||
public void LookAround(Vector2 lookDir, float sensitivitMultiplier = 1f)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=6 format=3 uid="uid://0ysqmqphq6mq"]
|
||||
[gd_scene load_steps=9 format=3 uid="uid://0ysqmqphq6mq"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dtkdrnsmlwm67" path="res://systems/head/HeadSystem.cs" id="1_8abgy"]
|
||||
[ext_resource type="Material" uid="uid://dtq8i1ka1f2pn" path="res://player_controller/Assets/Materials/Health/CameraVignette.tres" id="2_urko7"]
|
||||
@@ -10,12 +10,70 @@ shader = ExtResource("4_ubhf8")
|
||||
shader_parameter/limit = 0.0
|
||||
shader_parameter/blur = 0.0
|
||||
|
||||
[sub_resource type="Animation" id="Animation_8abgy"]
|
||||
resource_name = "mantle"
|
||||
length = 0.3
|
||||
tracks/0/type = "bezier"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("..:rotation:x")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"handle_modes": PackedInt32Array(2, 2, 2),
|
||||
"points": PackedFloat32Array(0, 0, 0, 0.050000004, 0, -0.17453292, -0.050000004, 0, 0.050000004, 0, 0, -0.050000004, 0, 0, 0),
|
||||
"times": PackedFloat32Array(0, 0.15, 0.3)
|
||||
}
|
||||
tracks/1/type = "bezier"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("..:rotation:z")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"handle_modes": PackedInt32Array(2, 2, 2, 2),
|
||||
"points": PackedFloat32Array(0.00011616433, 0, 0, 0.033333335, 0, -0.05235988, -0.033333335, 0, 0.033333335, 0, 0.05235988, -0.033333335, 0, 0.03333334, 0, 0, -0.03333334, 0, 0, 0),
|
||||
"times": PackedFloat32Array(0, 0.1, 0.2, 0.3)
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_urko7"]
|
||||
length = 0.001
|
||||
tracks/0/type = "bezier"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("..:rotation:x")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"handle_modes": PackedInt32Array(0),
|
||||
"points": PackedFloat32Array(0, -0.15, 0, 0.15, 0),
|
||||
"times": PackedFloat32Array(0)
|
||||
}
|
||||
tracks/1/type = "bezier"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("..:rotation:z")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"handle_modes": PackedInt32Array(0),
|
||||
"points": PackedFloat32Array(0, -0.15, 0, 0.15, 0),
|
||||
"times": PackedFloat32Array(0)
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_0hyrq"]
|
||||
_data = {
|
||||
&"RESET": SubResource("Animation_urko7"),
|
||||
&"mantle": SubResource("Animation_8abgy")
|
||||
}
|
||||
|
||||
[node name="HeadSystem" type="Node3D"]
|
||||
script = ExtResource("1_8abgy")
|
||||
|
||||
[node name="CameraSmooth" type="Node3D" parent="."]
|
||||
|
||||
[node name="Camera3D" type="Camera3D" parent="CameraSmooth"]
|
||||
transform = Transform3D(1, 0, 0, 0, 0.99999994, 0, 0, 0, 0.99999994, 0, 0, 0)
|
||||
current = true
|
||||
fov = 90.0
|
||||
|
||||
@@ -59,3 +117,9 @@ transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0,
|
||||
visible = false
|
||||
|
||||
[node name="CameraAnchor" type="Marker3D" parent="."]
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
root_node = NodePath("../CameraSmooth/Camera3D")
|
||||
libraries = {
|
||||
&"": SubResource("AnimationLibrary_0hyrq")
|
||||
}
|
||||
|
||||
@@ -15,8 +15,6 @@ public partial class MantleSystem: Node3D
|
||||
private ShapeCast3D _wallInFrontCast3D;
|
||||
private ShapeCast3D _mantleCast3D;
|
||||
private RayCast3D _mantleCheckCast3D;
|
||||
|
||||
private Option<Vector3> _mantleLocation;
|
||||
|
||||
public void Init()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user