Untitled
unknown
plain_text
a month ago
3.8 kB
4
Indexable
from ursina import * import random class SpaceSurvivalGame(Ursina): def __init__(self): super().__init__() self.player = Entity(model='cube', color=color.orange, scale=(1,2,1), position=(0,1,0)) self.ground = Entity(model='plane', texture='white_cube', scale=100, collider='box') self.resources = [] self.enemies = [] self.inventory = [] self.inventory_visible = False self.velocity_y = 0 self.is_jumping = False self.speed = 5 self.sensitivity = 100 self.mouse_locked = True camera.parent = self.player camera.position = (0, 2, -5) camera.look_at(self.player) window.fullscreen = False mouse.locked = True self.setup_ui() self.spawn_resources() self.spawn_enemies() def setup_ui(self): self.inventory_text = Text(text='Inventory: ', position=(-0.5, 0.4), scale=2, color=color.white, visible=False) def spawn_resources(self): for _ in range(10): res = Entity(model='sphere', color=color.green, scale=0.5, position=(random.randint(-10,10), 0.5, random.randint(-10,10)), collider='box') self.resources.append(res) def spawn_enemies(self): for _ in range(5): enemy = Entity(model='cube', color=color.red, scale=1.5, position=(random.randint(-10,10), 1, random.randint(-10,10)), collider='box') self.enemies.append(enemy) def update(self): self.player_movement() self.apply_gravity() self.check_collisions() self.mouse_look() self.toggle_inventory() def player_movement(self): speed = self.speed * time.dt if held_keys['shift']: speed *= 2 # Sprinting when Shift is held if held_keys['w']: self.player.z -= speed if held_keys['s']: self.player.z += speed if held_keys['a']: self.player.x -= speed if held_keys['d']: self.player.x += speed if held_keys['space'] and not self.is_jumping: self.velocity_y = 0.2 self.is_jumping = True def apply_gravity(self): self.player.y += self.velocity_y self.velocity_y -= 0.01 if self.player.y <= 1: self.player.y = 1 self.is_jumping = False self.velocity_y = 0 def check_collisions(self): for res in self.resources[:]: if self.player.intersects(res).hit: self.inventory.append('Resource') self.inventory_text.text = f'Inventory: {len(self.inventory)} items' destroy(res) self.resources.remove(res) for enemy in self.enemies: if self.player.intersects(enemy).hit: print('You were attacked by an alien!') def mouse_look(self): if mouse.locked: self.player.rotation_y += mouse.velocity[0] * self.sensitivity camera.rotation_x -= mouse.velocity[1] * self.sensitivity camera.rotation_x = clamp(camera.rotation_x, -90, 90) def toggle_inventory(self): if held_keys['e'] and not self.inventory_visible: self.inventory_visible = True self.inventory_text.visible = True elif held_keys['e'] and self.inventory_visible: self.inventory_visible = False self.inventory_text.visible = False if __name__ == '__main__': game = SpaceSurvivalGame() game.run()
Editor is loading...
Leave a Comment