关于#python#的问题:在用ursina做游戏时光影出现错误

在用ursina做游戏时,用了光影,出现以下报错

img

代码如下

from ursina import *
from ursina.prefabs.first_person_controller import FirstPersonController
from ursina.shaders import lit_with_shadows_shader
app=Ursina()
Entity.default_shader = lit_with_shadows_shader
DirectionalLight(y=5,rotation=(45,45,0))
Sky()
ground = Entity(model='plane',collider='box',scale=128,texture='grass')

for i in range(64):
    Entity(model='cube',scale=3,texture='brick',x = random.uniform(-64,64),z = random.uniform(-64, 64) ,collider='box',scale_y = random.uniform(3,6),texture_scale=2,origin_y=-0.5)
editor_camera=EditorCamera(enabled=False)
def input_pause(key):
    if key == 'c':
        editor_camera.enabled= not editor_camera.enabled

pause_handler = Entity(input = input_pause)

player = FirstPersonController(model= 'cube',color=color.blue,origin=-0.5,scale_y = 1,speed=8)

guns = Entity(model=load_model('ak2.obj'),parent=camera,scale=(3,5,3),position=(0.71,-0.75,0.35),on_cooldown=False,texture = 'white_cube',color=color.cyan)

def shoot():
    if not guns.on_cooldown:
        from ursina.prefabs.ursfx import ursfx
        ursfx([(0.1, 0.0), (0.1, 0.9), (0.15, 0.75), (0.3, 0.14), (0.6, 0.0)], volume=0.5, wave='noise',
              pitch=random.uniform(-13, -12), pitch_change=-12, speed=3.0)
        guns.on_cooldown = True
        invoke(setattr,guns,'on_cooldown',False,delay = 0.2)
        if mouse.hovered_entity and hasattr(mouse.hovered_entity,'hp'):
            mouse.hovered_entity.blink(color.orange)
            mouse.hovered_entity.hp -= 10
            if mouse.hovered_entity.hp <= 10:
                destroy(mouse.hovered_entity)
            mouse.hovered_entity.health_bar.scale_x = mouse.hovered_entity.hp/mouse.hovered_entity.max_hp *1.5
def update():
    if held_keys['left mouse']:
        shoot()
class Enemy(Entity):
    def __init__(self, add_to_scene_entities=True,** kwargs):
        super().__init__(add_to_scene_entities,model = 'cube',collider='box',scale_y = 2,origin_y =-0.5,color = color.red,**kwargs)
        self.health_bar = Entity(model='cube',parent=self,color=color.gold,y = 1.3,scale=(1.5,0.1,0.1))
        self.max_hp = 100
        self.hp = self.max_hp
    def update(self):
        self.look_at_2d(player.position,'y')
        if distance_xz(self.position,player.position) > 3.5:
            self.position = self.position + self.forward*time.dt*5


Enemy()
app.run()


  • 以下回答由chatgpt基于相关博客总结生成:

    根据提供的信息,问题似乎与 Ursina 库中的光影效果相关。然而,由于没有提供任何代码示例,我们无法为您提供具体的解决方案。因此,我们建议您尝试以下步骤来解决问题:

    1. 确认是否正确引入了 Ursina 库。请确保已经正确安装了 Ursina 库,并在代码的开头添加以下代码来引入 Ursina:
    from ursina import *
    
    1. 检查光影效果的相关代码。请确保在您的代码中正确地使用了 Ursina 提供的光影效果。具体的代码可能因您的实际需求而有所不同,以下是一个使用 Ursina 中的阴影效果的示例代码:
    from ursina import *
    
    app = Ursina()
    
    cube = Entity(model='cube', color=color.white, scale=(2, 2, 2))
    light = DirectionalLight(parent=cube, y=2, z=3)
    camera.position = (0, 0, -5)
    camera.look_at(cube)
    
    app.run()
    

    请确保在您的代码中正确使用光影效果,并根据您的需求进行相应的调整。

    1. 检查报错信息并尝试调试。如果您在添加光影效果时遇到了报错,请仔细阅读报错信息并尝试调试。报错信息通常会提供详细的错误信息,比如具体的代码行数或错误类型。根据报错信息,您可以尝试进行以下调试步骤:

    2. 检查代码的语法和拼写错误。

    3. 确保您的代码与 Ursina 库的版本兼容。
    4. 参考 Ursina 官方文档或示例代码,查看是否有特定的配置或设置需要进行调整。

    如果您可以提供更多的代码示例或详细的报错信息,我们将能够更好地帮助您解决问题。