diff --git a/scenes/game/player.tscn b/scenes/game/player.tscn index 2c57d8b..a989817 100644 --- a/scenes/game/player.tscn +++ b/scenes/game/player.tscn @@ -22,6 +22,11 @@ mesh = SubResource( 1 ) [node name="CollisionShape" type="CollisionShape" parent="."] shape = SubResource( 2 ) +[node name="StairDetector" type="RayCast" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.8, 0 ) +enabled = true +cast_to = Vector3( 0, 0, -2 ) + [node name="CameraBase" type="Spatial" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.85, 0 ) diff --git a/scripts/game/Player.gd b/scripts/game/Player.gd index 929db1c..ef90913 100644 --- a/scripts/game/Player.gd +++ b/scripts/game/Player.gd @@ -1,6 +1,7 @@ class_name Player extends KinematicBody +onready var stair_detector: RayCast = $StairDetector onready var camera = $CameraBase/Camera onready var camera_base = $CameraBase onready var raycast = $CameraBase/Camera/RayCast @@ -88,6 +89,8 @@ func _physics_process(delta): if Input.is_action_pressed("forward"): direction -= camera_base_basis.z #forward is negative in Godot + if stair_detector.is_colliding() and is_on_floor(): + velocity.y = jump_vel * power_multipler if Input.is_action_pressed("backward"): direction += camera_base_basis.z