我正在尝试编写汽车驾驶脚本,但是只有在按下E
之后,汽车才能行驶...
条件:
(Input.GetKey(KeyCode.E))
我尝试过的事情:
bool PersonInCar = false;
PersonInCar=(Input.GetKey (KeyCode.E))||(PersonInCar==true)
if (PersonInCar) {
答案 0 :(得分:3)
如果(按照您的标题)您的意图是一旦您的 condition 为true,然后使该变量为true,然后永远保持为true,则只需要:
PersonInCar = PersonInCar || Input.GetKey (KeyCode.E));
Input.GetKey (KeyCode.E))
第一次为真时,PersonInCar
将为真。然后,无论之后Input.GetKey (KeyCode.E))
给出什么 值,PersonInCar
都将保持为真。
您还需要确保nexer以其他某种方式将其显式更改回false,除非出于某些原因需要这样做。换句话说,如果您在当前位置创建它,它将始终在此处初始化。您可能希望将其移出该范围(例如在构造上初始化的类的成员变量)。
您会注意到我也更改了对true的检查-通常不应将布尔值与true或false进行比较,因为它们是 meant 作为条件被读取。有关更多详细信息,请参见Is there ever a reason to write "if (myBoolean == true)" in a JavaScript conditional?。
如果相反(根据您对评论的可能解释),您只想让汽车在 内移动,而 键被按下,那很简单:
if PersonInCar && Input.GetKey (KeyCode.E)) {
WhateverDrivingEntails();
}
答案 1 :(得分:2)
您正在将bool值重置为false(假设PersonInCar在条件之前就已在本地声明)。
将PersonInCar设置为全局范围(类的成员)
答案 2 :(得分:0)
这里不需要任何变量,如果您希望在按E后汽车始终行驶,请使用以下解决方案:
if (Input.GetKey (KeyCode.E))
{
Drive()
}
此外,我建议订阅按钮事件,而不要直接识别所按下的键。
答案 3 :(得分:0)
//首先,在窗体构造函数或窗体加载上注册KeyDown事件
this.KeyDown += new KeyEventHandler(OnKeyDown);
现在编写一个处理程序方法来处理按键事件。
private void OnKeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.E:
DriveTheCar();
break;
case Keys.C: // It could be any key that end the application
Application.Exit();
break;
}
}
最后是开车的方法。
private void DriveTheCar()
{
if (PersonInCar) {
// drive the car
}
}