我试图制作游戏,但这发生了
I tried to make a game but this happened
from ursina import *
from ursina.prefabs.first_person_controller import FirstPersonController
class Box(Button):
def __init__(block='grass.obj',texture='grasstex.png',pose:tuple=(0,0,0)):
super().__init__(model=block,texture=texture, collider='mesh',position=pose)
app=Ursina()
tp=50
for x in range(tp):
for z in range(tp):
Box(pose=(x,0,z))
player=FirstPersonController()
player.z=player.x=0
Sky()
app.run()
它给了我这个错误:
断言失败:在 panda/src/pgraph/nodePath.cxx 的第 407 行重新设置父级
断言失败:检测到在场景图中创建循环的尝试:ui_render/ui_camera/ui/box:c:\buildslave\sdk-windows-amd64\build\panda\src\pgraph\pandaNode.cxx
行 2637 处的 PandaNode 框
我该怎么办?
您在 Block
构造函数中忘记了 self
参数:
class Box(Button):
def __init__(self, block='grass.obj', texture='grass', pose:tuple=(0,0,0)):
super().__init__(
parent=scene,
model=block,
texture=texture,
collider='mesh',
position=pose)
Python 对象中的每个方法都将接收其实例作为第一个参数。我还必须明确分配 parent=scene
,否则盒子会连接到相机 UI,即使文档另有说明。
from ursina import *
from ursina.prefabs.first_person_controller import FirstPersonController
class Box(Button):
def __init__(block='grass.obj',texture='grasstex.png',pose:tuple=(0,0,0)):
super().__init__(model=block,texture=texture, collider='mesh',position=pose)
app=Ursina()
tp=50
for x in range(tp):
for z in range(tp):
Box(pose=(x,0,z))
player=FirstPersonController()
player.z=player.x=0
Sky()
app.run()
它给了我这个错误:
断言失败:在 panda/src/pgraph/nodePath.cxx 的第 407 行重新设置父级 断言失败:检测到在场景图中创建循环的尝试:ui_render/ui_camera/ui/box:c:\buildslave\sdk-windows-amd64\build\panda\src\pgraph\pandaNode.cxx
行 2637 处的 PandaNode 框我该怎么办?
您在 Block
构造函数中忘记了 self
参数:
class Box(Button):
def __init__(self, block='grass.obj', texture='grass', pose:tuple=(0,0,0)):
super().__init__(
parent=scene,
model=block,
texture=texture,
collider='mesh',
position=pose)
Python 对象中的每个方法都将接收其实例作为第一个参数。我还必须明确分配 parent=scene
,否则盒子会连接到相机 UI,即使文档另有说明。