现在我使用 WASD 键来控制一个对象。现在我想用操纵杆来做同样的事情。谁能告诉我如何调整我的代码来做到这一点?我要做的就是将 if (Input.getKey) 空间替换为 if (Input) 空间,该空间将使用操纵杆左右移动船。
void drive()
{
//decrease speed
if (Input.GetKeyDown(KeyCode.S))
{
//in Drive
if (acceleration > 0 &&
bucketMode == false)
{
acceleration-= 250;
}
//in Reverse
else if (acceleration < 0 &&
bucketMode == true)
{
acceleration += 250;
}
}
//Increases Speed
if (Input.GetKeyDown(KeyCode.W))
{
//in Drive
if (acceleration < maxSpeed &&
bucketMode == false)
{
acceleration+= 250;
}
//in Reverse
else if (acceleration > minSpeed &&
bucketMode == true)
{
acceleration -= 250;
}
}
//stops the boat and toggles Bucket mode
if (Input.GetKeyDown(KeyCode.Space))
{
acceleration = 0;
if (bucketMode == false)
{
//goes into revers
bucketMode = true;
craft.bucket(1); //sends bucket as true
}
else
{
//goes into drive
bucketMode = false;
craft.bucket(0); //sends bucket as false
}
}
//moves forward if speed is +
if (acceleration < 0)
{
//moves backwards at half the speed than in drive, in a smooth motion, speed depending on user input(acceleration)
this.transform.Translate(Vector3.left * Time.smoothDeltaTime * ((-acceleration / 500) +1));
//updates craft speed being displayed
craft.ChangeSpeed((acceleration/500) * 1.94);
}
//moves backward if speed is -
else if (acceleration > 0)
{
//moves forward in a smoothb motion, speed depending on user input(acceleration)
this.transform.Translate(Vector3.right * Time.smoothDeltaTime * ((acceleration / 250) + 1));
//updates craft speed being displayed
craft.ChangeSpeed((acceleration/250) * 1.94);
}
//stands still if speed is 0
else
{
}
//turns right
if (Input.GetKey(KeyCode.D))
{
//turns the boat to the left smoothly, as speed increases, so does turn angle
this.transform.Rotate(Vector3.forward * Time.smoothDeltaTime * 25 /* ((2 * acceleration / 250) +1)*/);
//updates boat information(heading and speed)
craft.ChangeHeading(1 * Time.smoothDeltaTime * 25 /* ((2 * acceleration / 250) +1)*/);
craft.ChangeSpeed((acceleration/250) * 1.94);
//if boat is not moving forwards, moves forward slowly, so boat doesn't turn in place
if (acceleration == 0)
{
this.transform.Translate(Vector3.right * Time.smoothDeltaTime / 2);
}
}
//turns left
if (Input.GetKey(KeyCode.A))
{
//turns the boat to the right smoothly, as speed increases, so does turn angle
this.transform.Rotate(Vector3.back * Time.smoothDeltaTime * 25 /* ((2 * acceleration / 250) +1)*/);
//updates boat information(heading and speed)
craft.ChangeHeading(-1 * Time.smoothDeltaTime * 25 /* ((2 * acceleration / 250) +1)*/);
craft.ChangeSpeed((acceleration/250) * 1.94);
//if boat is not moving forwards, moves forward slowly, so boat doesn't turn in place
if (acceleration == 0)
{
this.transform.Translate(Vector3.right * Time.smoothDeltaTime / 2);
}
}
}