搅拌机游戏引擎作为模拟工具如何包含一次性计算

Posted

技术标签:

【中文标题】搅拌机游戏引擎作为模拟工具如何包含一次性计算【英文标题】: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 不知道其他函数中的值... 有人可以帮忙吗?

【问题讨论】:

【参考方案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 的位置......

以上是关于搅拌机游戏引擎作为模拟工具如何包含一次性计算的主要内容,如果未能解决你的问题,请参考以下文章

如何在 python 脚本中将 .obj 文件从搅拌机导入搅拌机游戏引擎

目前哪个游戏物理引擎最先进

网络游戏是怎么开发的?

游戏制作大致流程粗谈之五

从方程生成纹理作为时间的函数

为啥计算机/游戏物理引擎通常是不确定的?