Untitled
unknown
plain_text
9 months ago
3.8 kB
7
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