官术网_书友最值得收藏!

Selecting control modes

It is common for games to ask the user to select the control mode they prefer, but it is also a good practice to avoid friction as much as possible by not asking what is not necessary.

YASS is only using a virtual joystick and the gamepad controls. There is no need to ask the user which one he or she wants. Both input modes are compatible, especially because the virtual joystick does not display anything on the screen when it is not used. The only thing we need to do is to modify the GameEngine to support more than one InputController.

Note

We will support both input modes simultaneously.

The way to support both input modes at the same time is to create a CompositeInputController that uses the composition pattern to have both a VirtualJoystickInputController and a GamepadInputController, and combines the input from both.

To synchronize the readings from the two input controllers, we are going to use a method on the InputController called onPreUpdate, which will be called just before onUpdate. We will use it to populate the values of mHorizontalFactor, mVerticalFactor, and mIsFiring with the ones read from the other controllers.

public void onPreUpdate() {
  mIsFiring = mGamepadInputController.mIsFiring || mVJoystickInputController.mIsFiring;
  mHorizontalFactor = mGamepadInputController.mHorizontalFactor + mVJoystickInputController.mHorizontalFactor;
  mVerticalFactor = mGamepadInputController.mVerticalFactor + mVJoystickInputController.mVerticalFactor;
}

We now have a game that can be controlled with a virtual joystick and a gamepad.

主站蜘蛛池模板: 广宗县| 漳平市| 江源县| 桑日县| 桐柏县| 海口市| 昆明市| 凤庆县| 白河县| 民勤县| 武川县| 鄂托克前旗| 孙吴县| 彰武县| 军事| 咸阳市| 美姑县| 隆德县| 湟源县| 雅安市| 涟源市| 怀安县| 茂名市| 邢台县| 青川县| 海林市| 托克逊县| 廉江市| 新巴尔虎左旗| 循化| 永嘉县| 齐齐哈尔市| 夏津县| 枝江市| 武邑县| 武穴市| 加查县| 定西市| 平顺县| 汪清县| 洞口县|