from ursina import * from ursina.prefabs.first_person_controller import FirstPersonController app = Ursina() window.title = "Parkour Challenge" player = FirstPersonController( position=(0,2,0), speed=6 ) Sky() ground = Entity( model='cube', scale=(10,1,10), texture='white_cube', color=color.green, collider='box' ) checkpoint_pos = Vec3(0,2,0) difficulty = 0 class Checkpoint(Entity): def __init__(self, position): super().__init__( model='cube', color=color.yellow, scale=(2,1,2), position=position, collider='box' ) def update(self): global checkpoint_pos if distance(self, player) < 2: checkpoint_pos = self.position + Vec3(0,2,0) self.color = color.orange class KillBlock(Entity): def __init__(self, position): super().__init__( model='cube', color=color.red, position=position, scale=(4,1,4), collider='box' ) def update(self): if distance(self, player) < 2: player.position = checkpoint_pos def create_section(start_z, level): gap = min(8, 2 + level) for i in range(8): Entity( model='cube', color=color.azure, scale=(3,1,3), position=(0,0,start_z + i*(gap+3)), collider='box' ) Checkpoint(position=(0,1,start_z+20)) for stage in range(10): create_section(stage*60, stage) for i in range(15): KillBlock(position=(10,0,i*20)) Text( text="WASD = Move | SPACE = Jump", position=(-0.8,0.45), scale=1.5 ) def update(): global difficulty if player.y < -20: player.position = checkpoint_pos difficulty = int(player.z // 60) window.title = f"Parkour Challenge - Difficulty {difficulty+1}" app.run()