Python if语句未按预期工作。代码“显然”叫twi

2024-06-29 01:07:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一段代码:

import bge
import GameLogic
import os

os.system("cls")
scene = GameLogic.getCurrentScene()
objects = scene.objects
objectCube = objects["Cube"]
visible = objectCube.visible
if visible == True:
    objectCube.setVisible(False, True)
else:
    objectCube.setVisible(True, True)

这段代码应该切换一个对象的可见性,但实际上对象会在一瞬间消失并立即重新出现。它看起来像是在闪烁。我做错什么了?在

另外,别担心其他变量,它们工作得很好。我用一些控制台输出测试了它们。在


Tags: 对象代码importtrueobjectsosscenesystem
2条回答

问题:鼠标传感器每次点击都会发送两个信号,一个是鼠标向下,一个是鼠标向上。鼠标向下发送一个正信号,而鼠标向上发送负信号。在

你可以通过按住鼠标键来测试,立方体将消失,当你释放鼠标时,它将返回。在

解决方案:使用传感器的positive属性来确定这是鼠标上下事件。在

import bge
import GameLogic
import os


os.system("cls")
scene = GameLogic.getCurrentScene()
objects = scene.objects
objectCube = objects["Cube"]
visible = objectCube.visible

# get the mouse sensor
cont = bge.logic.getCurrentController()
sens = cont.sensors['Mouse']
if sens.positive: # positive means a down button event
    if visible == True:
        objectCube.setVisible(False, True)
    else:
        objectCube.setVisible(True, True)

setVisible的第二个参数设置游戏子对象的可见性。您将其设置为True。在本例中,您隐藏了主对象并显示了子对象。在

跟随http://bgepython.tutorialsforblender3d.com/GameObject/setVisiblerecursive参数并不意味着recursive show/hide all children elements,而是{}

http://www.tutorialsforblender3d.com/BGE_Python/Sensors/Mouse/MouseSensor_LButton_getButtonStatus.htmlmouse event之后发送两个事件mouse press和{}。也许你没有区分press和{}并调用两次代码?在

相关问题 更多 >