Normally below code will result in X:Infinity, Y:Infinity
TouchCollection touchState = TouchPanel.GetState();
foreach (TouchLocation t in touchState)
{
if (t.State == TouchLocationState.Pressed)
{
vb.ButtonTouched((int)t.Position.X, (int)t.Position.Y);
}
}
Then, I followed this https://github.com/mono/MonoGame/issues/1046 and added below code at the first line in update method. (I still don't know how it's worked, but it fixed the problem)
if (_firstUpdate)
{
typeof(Microsoft.Xna.Framework.Input.Touch.TouchPanel).GetField("_touchScale",System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static).SetValue(null, Vector2.One);
_firstUpdate = false;
}
And then, when I randomly testing something, there are several area that won't read the user touch.
The tile with the purple dude is the area which won't receive user input (It don't even detect "Pressed", the TouchCollection.Count = 0)
Any idea how to fix this?
UPDATE 1 : The second attempt in recompiling
The difference is weird. Dunno why the consistent clickable area is just 2/3 area to the left
UPDATE 2 : After trying to rotate to landscape and back to portrait to randomly testing, then the outcome become :