搅拌机中的 addObject() python

addObject() in blender with python

我运行这里有点墙: 我的意思是,对于一个空的,移动,然后在现场添加一个平面,然后移动,然后添加一个平面等,然后最终得到一个 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()

但是,令我惊讶的是,它首先添加图块,然后通过忽略 add() 的循环,所以结果是 0x0y 处的 1x1 图块和 100x100y 处的空结束......有多少东西我在这里做错了?Aaaand,既然我们在这里,你将如何改进编码?(尝试在这里学习 ;))

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()