There are three ways to get touch screen input.
The y-axis is inverted for the first two, so the coordinates for the top left corner of the touch screen are as follows:
The easiest way is to treat touch screen input as mouse input, but the Wii Remote on channel 0 (the first player) also uses Input.GetMouseButton(0)
(for the A button) and Input.mousePosition
(for the pointer). However, Input.mousePosition
returns the coordinates for the TV, not the GamePad, and in a different scale. You can disable the Wii Remote pointer with UnityEngine.WiiU.Remote.DisableDPD()
. This will stop both Input.GetMouseButton(0)
and Input.mousePosition
from responding to Wii Remote input. Another option is to use one of the other methods to get touch input.
1 2 3 4 5 6 |
Vector3 touchPosition;
if (Input.GetMouseButton(0)) { // A touch was registered // Get the location of the touch touchPosition = Input.mousePosition; } |
This is very similar to mouse input. The Wii U only supports one touch at a time, so you only ever need to check Input.touches[0]
.
1 2 3 4 5 6 |
Vector2 touchPosition;
if (Input.touchCount > 0){ // A touch was registered // Get the location of the touch touchPosition = Input.touches[0].position; } |
This method is slightly more complicated, but is easy to use if you are already using the Wii U API for the GamePad buttons, joysticks or sensors. After creating a GamePad
object, you must get a new WiiU.GamePadState
every time you want to read input.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
using UnityEngine;
using WiiU = UnityEngine.WiiU; public class gamePadInputTest : MonoBehaviour { WiiU.GamePad gamePad; void Start() { // Create a GamePad object gamePad = WiiU.GamePad.access; } void Update() { // Get the new state of the GamePad WiiU.GamePadState gamePadState = gamePad.state; if (gamePadState.gamePadErr == WiiU.GamePadError.None) { // Get the touch position Vector2 touchPosition; touchPosition.x = gamePadState.touch.x; touchPosition.y = gamePadState.touch.y; } } } |
CONFIDENTIAL