Я пытался использовать сетчатый коллайдер и бокс-коллайдер с модулем, но безрезультатно. Я также попытался создать отдельный класс сущности и добавить его в FirstPersonController, но, увы, это тоже не сработало. Я опубликую изображения и код, которые у меня есть на данный момент.
На этом изображении изображена моя модель, прорезающая половину стены:

На этом изображении моя модель прорезает половину пола:

На этом изображении показано обнаружение столкновений, включенное с помощью моя модель прорезает стены:

Код: Выделить всё
from ursina import *
from ursina.prefabs.first_person_controller import *
from perlin_noise import PerlinNoise
noise = PerlinNoise(octaves=3, seed=random.randint(1,10000))
app = Ursina()
ground = Entity(
model="cube",
scale=(200,20,200),
texture="grass",
position=(0,-30,0),
collider="box"
)
walls = Entity(
model="walls_starting_area.obj",
position=(0,-30,0),
collider="mesh",
texture="brick"
)
Sky()
class character(Entity):
def __init__(self, position=(0,-20,0), model="cube", speed=20, collider="box",scale_x=1,scale_y=1):
super().__init__(
model=model,
position=position,
speed=speed,
collider=collider,
scale_x=scale_x,
scale_y = scale_y
)
self.model = model
self.position = position
self.speed = speed
self.collider = collider
self.scale_x = scale_x
self.scale_y = scale_y
wall = character(position=(0,-20,3), scale_x=30, scale_y=20,collider="box")
player = FirstPersonController(model="cube", collider="box",speed= 20)
camera.z = -5
def update():
# Check for collisions between the player and other entities
for obj in scene.entities:
if obj.collider and player.intersects(obj).hit:
print(f"Collision with {obj}")
app.run()
Подробнее здесь: https://stackoverflow.com/questions/783 ... personcont