【问题标题】:blender game engine as simulation tool how to include one time calculations搅拌机游戏引擎作为模拟工具如何包含一次性计算
【发布时间】:2015-04-23 04:59:24
【问题描述】:

我想将搅拌机游戏引擎用作无人机的模拟工具。我有四个点,无人机应该飞到拉伸区域的最近点。有谁知道我如何将这些计算包含在每隔几帧运行一次的脚本中。我试过这样的:

def init:
if not 'init' in own: own['init'] = 1 do all the path calculations

但是当然 python 不知道其他函数中的值... 有人可以帮忙吗?

【问题讨论】:

    标签: python blender


    【解决方案1】:

    游戏引擎中有two ways to run python code,作为脚本或作为模块。脚本从头到尾运行,而模块是专门调用的函数的集合。模块还可以保留可以从任何函数访问的全局变量。

    要使用模块,请在python控制器选择模块中命名以.py结尾的文本块并输入mytextblock.myfunc。控制器调用的函数应该有一个参数,即调用该函数的控制器对象。

    import bge
    
    var1 = 1
    
    def myfunc(cont):
        global var1
        var1 += 1
        update()
    
    def update():
        global var1
        scene = bge.logic.getCurrentScene()
        scene.objects['Text']['Text'] = str(var1)
    

    【讨论】:

    • 所以 myfunc() 被调用一次并且 update() 将执行移动?
    • myfunc() 由 python 控制器根据触发它的传感器调用,myfunc 是完成所有工作还是调用其他函数来完成全部或部分工作取决于您。跨度>
    • 好的,我明白了,实际上我想按一次按钮,然后应该根据计算执行完整的移动,当对象位于正确的位置时,下一个脚本在没有我的情况下被调用做更多的事情。这有可能吗?
    • 查看附近的传感器。我正在考虑根据您的计算定位一个“目的地”对象,然后让附近的传感器触发下一个脚本以重新定位目的地。
    • 嘿,再次感谢。现在可以了。所以现在我正在尝试将近传感器连接到 Empty,然后触发下一个目的地计算。这甚至可能与空?因为什么都没有发生......实际上它会在“游戏”结束时更新 Empty 的位置......
    猜你喜欢
    • 2013-01-17
    • 2015-05-13
    • 2013-06-27
    • 2019-12-22
    • 2015-07-05
    • 2015-07-02
    • 2015-01-26
    • 2011-10-21
    • 2017-09-24
    相关资源
    最近更新 更多