我进入了游戏开发领域,我决定选择Godot作为游戏引擎,因为它支持c#,而且我懂这门语言。我一直在制作一款简单的游戏,在某个时候,我遇到了一个问题。我想让一个精灵在按下按键时不可见。我希望它是这样的,如果键被按下,它会永久地做一个动作。
我试过了,但是Input.IsPhysicalKeyPressed((int))在我释放键
时停止了动作public override void _PhysicsProcess(float delta)
{
Visible = true;
if (Input.IsPhysicalKeyPressed((int)KeyList.W) || Input.IsPhysicalKeyPressed((int)KeyList.A) || Input.IsPhysicalKeyPressed((int)KeyList.S) || Input.IsPhysicalKeyPressed((int)KeyList.D))
{
Visible = false;
}
else if (Input.IsPhysicalKeyPressed((int)KeyList.Up) || Input.IsPhysicalKeyPressed((int)KeyList.Left) || Input.IsPhysicalKeyPressed((int)KeyList.Down) || Input.IsPhysicalKeyPressed((int)KeyList.Right))
{
Visible = false;
}
}
如何解决这个问题?
据我所知,您总是将Visible设置回true。如果你想有一个切换,你需要将Visible设置为Visible的反义词:
public override void _PhysicsProcess(float delta)
{
if (Input.IsPhysicalKeyPressed((int)KeyList.W) || Input.IsPhysicalKeyPressed((int)KeyList.A) || Input.IsPhysicalKeyPressed((int)KeyList.S) || Input.IsPhysicalKeyPressed((int)KeyList.D))
{
Visible = !Visible;
}
else if (Input.IsPhysicalKeyPressed((int)KeyList.Up) || Input.IsPhysicalKeyPressed((int)KeyList.Left) || Input.IsPhysicalKeyPressed((int)KeyList.Down) || Input.IsPhysicalKeyPressed((int)KeyList.Right))
{
Visible = !Visible;
}
}
这将不起作用,因为只要按下键,它就会切换可见性。为了解决这个问题,你需要添加一种方法来检查键是否被再次抬起,只有这样才能使它能够改变可见性。
我从来没有使用过Godot游戏引擎,所以我不确定它是如何工作的。我敢肯定,如果你不知道,一个简单的谷歌搜索会做它。