ld-gd: basic greyboxing, double jump
This commit is contained in:
@ -29,7 +29,9 @@ public partial class FieldOfView: Node3D
|
||||
public void PerformFovAdjustment(FovParameters parameters)
|
||||
{
|
||||
float velocityClamped = Mathf.Clamp(
|
||||
parameters.Velocity.Length(), 0.5f, parameters.SprintSpeed * 2.0f);
|
||||
Mathf.Abs(parameters.Velocity.X) + Mathf.Abs(parameters.Velocity.Z),
|
||||
0.5f,
|
||||
parameters.SprintSpeed * 2.0f);
|
||||
|
||||
float targetFov = BaseFov + FovChangeFactor * velocityClamped;
|
||||
|
||||
|
@ -24,6 +24,11 @@ public partial class PlayerController : CharacterBody3D
|
||||
[Export(PropertyHint.Range, "0,100,0.1,or_greater")]
|
||||
public float CrouchTransitionSpeed { get; set; } = 20.0f;
|
||||
|
||||
[Export(PropertyHint.Range, "0,5,0.1,or_greater")]
|
||||
public float DoubleJumpSpeedFactor { get; set; } = 2f;
|
||||
|
||||
private bool _canDoubleJump = true;
|
||||
|
||||
private float _currentSpeed;
|
||||
|
||||
private const float DecelerationSpeedFactorFloor = 15.0f;
|
||||
@ -115,6 +120,7 @@ public partial class PlayerController : CharacterBody3D
|
||||
if (isOnFloorCustom())
|
||||
{
|
||||
_lastFrameWasOnFloor = Engine.GetPhysicsFrames();
|
||||
_canDoubleJump = true;
|
||||
}
|
||||
|
||||
// Adding the gravity
|
||||
@ -139,6 +145,15 @@ public partial class PlayerController : CharacterBody3D
|
||||
y: Gravity.CalculateJumpForce() * (float)delta,
|
||||
z: Velocity.Z);
|
||||
}
|
||||
else if (Input.IsActionJustPressed("jump") && !isOnFloorCustom()
|
||||
&& !doesCapsuleHaveCrouchingHeight && !isPlayerDead && _canDoubleJump)
|
||||
{
|
||||
_canDoubleJump = false;
|
||||
Velocity = new Vector3(
|
||||
x: Velocity.X,
|
||||
y: Gravity.CalculateJumpForce() * (float)delta * DoubleJumpSpeedFactor,
|
||||
z: Velocity.Z);
|
||||
}
|
||||
|
||||
bool isHeadTouchingCeiling = IsHeadTouchingCeiling();
|
||||
bool doesCapsuleHaveDefaultHeight = CapsuleCollider.IsDefaultHeight();
|
||||
|
117
main.tscn
117
main.tscn
@ -21,13 +21,16 @@ glow_enabled = true
|
||||
environment = SubResource("Environment_1bvp3")
|
||||
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
|
||||
transform = Transform3D(-0.866024, -0.433016, 0.250001, -0.320371, 0.864432, 0.387452, -0.383882, 0.255449, -0.887345, 0, 0, 0)
|
||||
transform = Transform3D(-0.772218, 0.611111, 0.173844, 0.0446935, -0.220691, 0.974319, 0.633783, 0.760157, 0.143109, 0, 0, 0)
|
||||
shadow_enabled = true
|
||||
|
||||
[node name="Player" parent="." instance=ExtResource("1_ig7tw")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.25692, 0.0273442, 30.8297)
|
||||
WalkSpeed = 10.0
|
||||
SprintSpeed = 15.0
|
||||
|
||||
[node name="Greybox" type="Node" parent="."]
|
||||
[node name="Greybox" type="CSGCombiner3D" parent="."]
|
||||
use_collision = true
|
||||
|
||||
[node name="CSGBox3D" type="CSGBox3D" parent="Greybox"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.09619, -0.472656, -0.958893)
|
||||
@ -35,57 +38,137 @@ use_collision = true
|
||||
size = Vector3(100, 1, 100)
|
||||
|
||||
[node name="CSGBox3D2" type="CSGBox3D" parent="Greybox"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -22.4157, 5, 14.9013)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -22, 5, 11.0613)
|
||||
use_collision = true
|
||||
size = Vector3(10, 10, 50)
|
||||
size = Vector3(10, 10, 57.8774)
|
||||
|
||||
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="Greybox"]
|
||||
[node name="Stairs" type="CSGCombiner3D" parent="Greybox"]
|
||||
use_collision = true
|
||||
|
||||
[node name="CSGBox3D5" type="CSGBox3D" parent="Greybox/CSGCombiner3D"]
|
||||
[node name="CSGBox3D5" type="CSGBox3D" parent="Greybox/Stairs"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.0294, 0.5, 32.891)
|
||||
size = Vector3(3, 1, 3)
|
||||
|
||||
[node name="CSGBox3D6" type="CSGBox3D" parent="Greybox/CSGCombiner3D"]
|
||||
[node name="CSGBox3D6" type="CSGBox3D" parent="Greybox/Stairs"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.029, 1, 29.905)
|
||||
size = Vector3(3, 2, 3)
|
||||
|
||||
[node name="CSGBox3D7" type="CSGBox3D" parent="Greybox/CSGCombiner3D"]
|
||||
[node name="CSGBox3D7" type="CSGBox3D" parent="Greybox/Stairs"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.029, 1.5, 26.9138)
|
||||
size = Vector3(3, 3, 3)
|
||||
|
||||
[node name="CSGBox3D8" type="CSGBox3D" parent="Greybox/CSGCombiner3D"]
|
||||
[node name="CSGBox3D8" type="CSGBox3D" parent="Greybox/Stairs"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.029, 2, 23.9462)
|
||||
size = Vector3(3, 4, 3)
|
||||
|
||||
[node name="CSGBox3D9" type="CSGBox3D" parent="Greybox/CSGCombiner3D"]
|
||||
[node name="CSGBox3D9" type="CSGBox3D" parent="Greybox/Stairs"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.029, 2.5, 20.975)
|
||||
size = Vector3(3, 5, 3)
|
||||
|
||||
[node name="CSGBox3D10" type="CSGBox3D" parent="Greybox/CSGCombiner3D"]
|
||||
[node name="CSGBox3D10" type="CSGBox3D" parent="Greybox/Stairs"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.029, 3, 17.9825)
|
||||
size = Vector3(3, 6, 3)
|
||||
|
||||
[node name="CSGBox3D11" type="CSGBox3D" parent="Greybox/CSGCombiner3D"]
|
||||
[node name="CSGBox3D11" type="CSGBox3D" parent="Greybox/Stairs"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.029, 3.5, 15)
|
||||
size = Vector3(3, 7, 3)
|
||||
|
||||
[node name="CSGBox3D12" type="CSGBox3D" parent="Greybox/CSGCombiner3D"]
|
||||
[node name="CSGBox3D12" type="CSGBox3D" parent="Greybox/Stairs"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.029, 4, 12.018)
|
||||
size = Vector3(3, 8, 3)
|
||||
|
||||
[node name="CSGBox3D13" type="CSGBox3D" parent="Greybox/CSGCombiner3D"]
|
||||
[node name="CSGBox3D13" type="CSGBox3D" parent="Greybox/Stairs"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.029, 4.5, 9.04904)
|
||||
size = Vector3(3, 9, 3)
|
||||
|
||||
[node name="CSGBox3D3" type="CSGBox3D" parent="Greybox"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.01999, 4.9845, 6.27246)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.0524, 10.795, 6.27246)
|
||||
use_collision = true
|
||||
size = Vector3(43.9793, 10, 2.62695)
|
||||
size = Vector3(39.9961, 21.6211, 2.62695)
|
||||
|
||||
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="Greybox/CSGBox3D3"]
|
||||
transform = Transform3D(4.2, 0, 0, 0, -6.11959e-08, -7, 0, 1.4, -3.0598e-07, 8, -5, -0.293446)
|
||||
transform = Transform3D(4.2, 0, 0, 0, -6.11959e-08, -7, 0, 1.4, -3.0598e-07, 8.96759, -10.8105, -0.293446)
|
||||
operation = 2
|
||||
radius = 1.0
|
||||
height = 5.0
|
||||
sides = 40
|
||||
|
||||
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="Greybox/CSGBox3D3"]
|
||||
transform = Transform3D(4.2, 0, 0, 0, -6.11959e-08, -7, 0, 1.4, -3.0598e-07, -11.9615, -10.8105, -0.293446)
|
||||
operation = 2
|
||||
radius = 1.0
|
||||
height = 5.0
|
||||
sides = 40
|
||||
|
||||
[node name="CSGBox3D4" type="CSGBox3D" parent="Greybox"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 35.9586, 5, 15.3133)
|
||||
use_collision = true
|
||||
size = Vector3(25.9171, 10, 66.0572)
|
||||
|
||||
[node name="CSGBox3D9" type="CSGBox3D" parent="Greybox"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21.5038, 2.5, 7.30957)
|
||||
size = Vector3(3, 5, 25.3809)
|
||||
|
||||
[node name="CSGBox3D10" type="CSGBox3D" parent="Greybox"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 11.517, 1.29345, 21.5)
|
||||
size = Vector3(3, 2.5, 22.978)
|
||||
|
||||
[node name="CSGBox3D5" type="CSGBox3D" parent="Greybox"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.45774, 10.7885, -6.46509)
|
||||
use_collision = true
|
||||
size = Vector3(2.15405, 21.577, 22.8794)
|
||||
|
||||
[node name="CSGBox3D6" type="CSGBox3D" parent="Greybox"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -7.80455, 10.8026, -16.8324)
|
||||
use_collision = true
|
||||
size = Vector3(2.15405, 21.6052, 18.459)
|
||||
|
||||
[node name="CSGBox3D7" type="CSGBox3D" parent="Greybox"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 45.6363, 5, -30.4887)
|
||||
use_collision = true
|
||||
size = Vector3(6.8864, 10, 40.8848)
|
||||
|
||||
[node name="CSGBox3D8" type="CSGBox3D" parent="Greybox"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 50.0149, 26.122, -0.963737)
|
||||
use_collision = true
|
||||
size = Vector3(2.14108, 52.2441, 99.9347)
|
||||
|
||||
[node name="CSGBox3D11" type="CSGBox3D" parent="Greybox"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -28.1405, 26.122, -0.963737)
|
||||
use_collision = true
|
||||
size = Vector3(2.14108, 52.2441, 99.9347)
|
||||
|
||||
[node name="CSGBox3D12" type="CSGBox3D" parent="Greybox"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 8.92915, 26.122, -49.9656)
|
||||
use_collision = true
|
||||
size = Vector3(2.14108, 52.2441, 99.9347)
|
||||
|
||||
[node name="CSGBox3D13" type="CSGBox3D" parent="Greybox"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 10.7529, 26.122, 49.3889)
|
||||
use_collision = true
|
||||
size = Vector3(2.14108, 52.2441, 99.9347)
|
||||
|
||||
[node name="CSGBox3D14" type="CSGBox3D" parent="Greybox"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -17.534, 10.8779, 27.1386)
|
||||
use_collision = true
|
||||
size = Vector3(1.10791, 1.71436, 25.7228)
|
||||
|
||||
[node name="CSGBox3D15" type="CSGBox3D" parent="Greybox"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.9058, 10.795, 47.0594)
|
||||
use_collision = true
|
||||
size = Vector3(76.2239, 21.6211, 2.62695)
|
||||
|
||||
[node name="CSGBox3D16" type="CSGBox3D" parent="Greybox"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.0259, 22.0567, -5.15678)
|
||||
use_collision = true
|
||||
size = Vector3(74.1406, 1, 25.474)
|
||||
|
||||
[node name="CSGBox3D17" type="CSGBox3D" parent="Greybox"]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -22.0327, 10.786, -16.8929)
|
||||
use_collision = true
|
||||
size = Vector3(2.03296, 2.20193, 10.1753)
|
||||
|
||||
[node name="CSGBox3D18" type="CSGBox3D" parent="Greybox"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -17.534, 10.9583, -4.19618)
|
||||
use_collision = true
|
||||
size = Vector3(1.10791, 1.71436, 23.4043)
|
||||
|
@ -6,3 +6,13 @@
|
||||
|
||||
[node name="HealthSystem" parent="." index="3"]
|
||||
ThresholdVelYForDamage = 0.0
|
||||
|
||||
[node name="Stamina" parent="." index="4"]
|
||||
MaxRunTime = 1000.0
|
||||
|
||||
[node name="Gravity" parent="." index="8"]
|
||||
AdditionalGravityPower = 4.02
|
||||
|
||||
[node name="Bobbing" parent="." index="9"]
|
||||
BobbingFrequency = 1.41
|
||||
BobbingAmplitude = 0.05
|
||||
|
Reference in New Issue
Block a user