This is the second tutorial with ursina, because now I use Python version 3.12.1 and Ursina comes with version 7.0.0 .
The install is easy with the pip tool.
pip install ursina
Collecting ursina
...
Installing collected packages: panda3d, screeninfo, panda3d-simplepbr, panda3d-gltf, ursina
Successfully installed panda3d-1.10.14 panda3d-gltf-1.2.0 panda3d-simplepbr-0.12.0 screeninfo-0.8.1 ursina-7.0.0
About Ursina you can read more on the official website.
Platforms:
- Windows
- Linux
- Mac (not officially supported, but will most likely work)
I tested with samples from the GitHub project and works well.
from ursina import *
app = Ursina(size=(1280,720))
physics_entities = []
class PhysicsEntity(Entity):
def __init__(self, model='cube', collider='box', **kwargs):
super().__init__(model=model, collider=collider, **kwargs)
physics_entities.append(self)
def update(self):
if self.intersects():
self.stop()
return
self.velocity = lerp(self.velocity, Vec3(0), time.dt)
self.velocity += Vec3(0,-1,0) * time.dt * 5
self.position += (self.velocity + Vec3(0,-4,0)) * time.dt
def stop(self):
self.velocity = Vec3(0,0,0)
if self in physics_entities:
physics_entities.remove(self)
def on_destroy(self):
self.stop()
def throw(self, direction, force):
pass
from ursina.shaders import lit_with_shadows_shader
Entity.default_shader = lit_with_shadows_shader
DirectionalLight().look_at(Vec3(1,-1,-1))
ground = Entity(model='plane', scale=32, texture='white_cube', texture_scale=Vec2(32), collider='box')
from ursina.prefabs.first_person_controller import FirstPersonController
player = FirstPersonController()
def input(key):
if key == 'left mouse down':
e = PhysicsEntity(model='cube', color=color.azure, velocity=Vec3(0), position=player.position+Vec3(0,1.5,0)+player.forward, collider='sphere')
e.velocity = (camera.forward + Vec3(0,.5,0)) * 10
# physics_entities.append(e)
Sky()
app.run()