【发布时间】:2015-04-23 04:59:24
【问题描述】:
我想将搅拌机游戏引擎用作无人机的模拟工具。我有四个点,无人机应该飞到拉伸区域的最近点。有谁知道我如何将这些计算包含在每隔几帧运行一次的脚本中。我试过这样的:
def init:
if not 'init' in own:
own['init'] = 1
do all the path calculations
但是当然 python 不知道其他函数中的值... 有人可以帮忙吗?
【问题讨论】:
我想将搅拌机游戏引擎用作无人机的模拟工具。我有四个点,无人机应该飞到拉伸区域的最近点。有谁知道我如何将这些计算包含在每隔几帧运行一次的脚本中。我试过这样的:
def init:
if not 'init' in own:
own['init'] = 1
do all the path calculations
但是当然 python 不知道其他函数中的值... 有人可以帮忙吗?
【问题讨论】:
游戏引擎中有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() 由 python 控制器根据触发它的传感器调用,myfunc 是完成所有工作还是调用其他函数来完成全部或部分工作取决于您。跨度>