Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /******************************************************************************/
- /******************************************************************************/
- //"project_boost_2025-05-22\landing_pad.gd":
- class_name LandingPad
- extends CSGBox3D
- @export_file('*.tscn') var path_of_next_level: String
- func _ready() -> void:
- assert(path_of_next_level != '',
- 'Path of next level is empty!')
- assert(ResourceLoader.exists(path_of_next_level),
- '"%s" doesn\'t exist!' % path_of_next_level)
- /******************************************************************************/
- /******************************************************************************/
- //"project_boost_2025-05-22\launch_pad.gd":
- class_name LaunchPad
- extends CSGBox3D
- @onready var player_scene = preload("res://scene_objects/player.tscn")
- # The launch pad automatically spawns a Player object on top of it!
- func _ready() -> void:
- var player: Player = player_scene.instantiate()
- player.position = $".".global_position
- player.position.y += size.y/2 + player.collider_size.y/2
- get_tree().current_scene.add_child.call_deferred(player)
- /******************************************************************************/
- /******************************************************************************/
- //"project_boost_2025-05-22\obstacle.gd":
- class_name Obstacle
- extends CSGBox3D
- # Beige-ish by default
- @export var color: Color = Color(0.76, 0.57, 0.40)
- func _ready() -> void:
- material.albedo_color = color
- /******************************************************************************/
- /******************************************************************************/
- //"project_boost_2025-05-22\player.gd":
- class_name Player
- extends RigidBody3D
- @export_range(0, 10000, 100, "or_greater") var velocity_thrust: float = 1000.0
- @export_range(0, 2000, 10, "or_greater") var velocity_rotation: float = 200.0
- # TBD: Figure out how to auto-detect collider size during object initialization
- var collider_size: Vector3 = Vector3(2.0, 2.0, 2.0) # (2 meters at 1x scale)
- var is_losing_or_winning: bool
- func _ready():
- is_losing_or_winning = false
- func _process(delta: float) -> void:
- if Input.is_action_pressed("rocket_thrust"):
- apply_central_force(basis.y * delta*velocity_thrust);
- # elif is not used in order to cancel out the action if both are pressed
- if Input.is_action_pressed("rocket_lturn"):
- apply_torque(Vector3(0,0, delta*velocity_rotation))
- if Input.is_action_pressed("rocket_rturn"):
- apply_torque(Vector3(0,0, -delta*velocity_rotation))
- func _on_body_entered(body: Node) -> void:
- var groups: Array = body.get_groups()
- if "Crash" in groups:
- crash_sequence()
- elif "Goal" in groups:
- complete_level(body.path_of_next_level)
- func crash_sequence() -> void:
- if is_losing_or_winning: return
- is_losing_or_winning = true
- print("You Fail It! Your Skill Is Not Enough!")
- await get_tree().create_timer(1.0).timeout
- get_tree().reload_current_scene()
- func complete_level(next_level_file: String) -> void:
- if is_losing_or_winning: return
- is_losing_or_winning = true
- print("You're Winner!")
- await get_tree().create_timer(1.0).timeout
- get_tree().change_scene_to_file(next_level_file)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement