現在我正在使用WASD鍵來控制對象。現在我想用遊戲杆來做同樣的事情。任何人都可以告訴我如何調整我的代碼來做到這一點?我想要做的就是用if(Input)空間替換if(Input.getKey)空間,該空間將使用操縱桿左右移動船隻。在C#中使用操縱桿來控制對象
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);
}
}
}
代碼最重要的部分是if語句的A和D,我剛剛包含的所有內容,以便您可以看到船如何移動 – Flotolk