繁体   English   中英

使用Python在Blender中添加addObject()

[英]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项目

尝试将dunMarkerworldPosition您可能还想将其用于循环以获取网格而不是两个边缘。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM