使用python在blender中添加对象()

使用python在blender中添加对象(),python,object,dynamic,add,blender,Python,Object,Dynamic,Add,Blender,我在这里碰到一堵小墙: 我的观点是,对于一个空的,移动,然后在现场添加一个平面,然后移动,然后添加一个平面等,最后将得到一个100X100的平面,所以我编写了脚本: import bge dunWidth = 100 #meters/tiles dunHeight = 100 #meters/tiles b = 0 a = 0 add= bge.logic.getCurrentScene().addObject def main(): global b, a cont = b

我在这里碰到一堵小墙: 我的观点是,对于一个空的,移动,然后在现场添加一个平面,然后移动,然后添加一个平面等,最后将得到一个100X100的平面,所以我编写了脚本:

import bge

dunWidth = 100 #meters/tiles
dunHeight = 100 #meters/tiles
b = 0
a = 0
add= bge.logic.getCurrentScene().addObject

def main():
    global b, a
    cont = bge.logic.getCurrentController()
    dunMarker = cont.owner
    #Movement Calculation: (X, Y, Z)
    while b < dunWidth:
        b += 1
        add("FloorTile", "DunMarker",0)
        dunMarker.applyMovement((1,0,0), False)
        while a < dunHeight:
            add("FloorTile", "DunMarker",0)
            a += 1
            dunMarker.applyMovement((0,1,0), False)
        #dunMarker.applyMovement((0,-dunHeight,0), False)
main()
导入bge
dunWidth=100米/瓦
dunHeight=100米/瓦
b=0
a=0
add=bge.logic.getCurrentScene().addObject
def main():
全球b,a
cont=bge.logic.getCurrentController()
dunMarker=继续所有者
#移动计算:(X,Y,Z)
而b
但是,让我惊讶的是,它首先添加了tile,然后忽略add()进行循环,因此结果是0x0y的1x1 tile,而空的结束于100x100y。。。我在这里做错了多少事?啊,既然我们在这里,你会如何改进编码?(在这里尝试学习;)


pd,是的,Roguelike 3D项目

尝试使用
worldPosition
定位
dunMarker
,您可能还希望使用for循环来获得网格,而不是两条边

import bge

dunWidth = 100 #meters/tiles
dunHeight = 100 #meters/tiles
a=0
b=0

add= bge.logic.getCurrentScene().addObject

def main():
    global a,b
    cont = bge.logic.getCurrentController()
    dunMarker = cont.owner
    for b in range(0,dunWidth,2):
        dunMarker.worldPosition=(b,a,0)
        t=add("FloorTile", "DunMarker",0)
        for a in range(0,dunHeight,2):
            dunMarker.worldPosition = (b,a,0)
            add("FloorTile", "DunMarker",0)
main()

谢谢!!!只是一个问题,为什么我设置了1而不是2(要制作一个100x100米的均匀地板需要3分钟才能加载,帧速率会下降?但如果我将增加值保留为2,则不会出现问题?(我制作了2x2瓷砖,效果很好)我想您知道为什么会发生这种情况,因为您将其设置为2,而XDA默认平面的宽度为2.0,因此我将其定位为合适的宽度。
range()
中的第三个数字是步骤,使用步骤1可创建四倍的平面(100x100对50x50)。添加大量对象的速度很慢。两倍多的对象也意味着两倍多的顶点,并且在整个尺寸上比一个平面慢。在100x100和1.0宽的情况下,放置10000个对象和40000个顶点,而在2.0宽的情况下,50x50是2500个对象和10000个顶点,数据越多,速度越慢。