Вы можете использовать Screen.width
, чтобы получить именно это: Ширина экрана устройства в пикселях.
Поскольку Touch.position
также находится в пространстве пикселей экрана, правая половина экрана так же проста, как и любое касание с
touch.position.x > Screen.width / 2f
, вы также можете использовать >=
в зависимости от того, хотите ли вы на один пиксель больше или меньше;)
А затем вы можете просто отфильтровать штрихи по этому условию перед доступом к ним, например, используя Linq Where
var validTouches = Input.touches.Where(touch => touch.position.x > Screen.width / 2f).ToArray();
Это в основном сокращение от выполнения чего-то вроде
var touches = new List<Touch>();
foreach(var touch in Input.touches)
{
if(touch.position.x > Screen.width / 2f)
{
touches.Add(touch);
}
}
var validTouches = touches.ToArray();
Таким образом, ваш код может выглядеть как
using System.Linq;
...
void Update()
{
//Check count touches
if (Input.touchCount > 0)
{
// Now collect only touches being on the left half of the screen
var validTouches = Input.touches.Where(touch => touch.position.x > Screen.width / 2f).ToArray();
if(validTouches.Length > 0)
{
var firstTouch = validTouches[0];
// Better use switch here
switch(firstTouch.phase)
{
case TouchPhase.Began:
firstpoint = firstTouch.position;
xAngTemp = xAngle;
yAngTemp = yAngle;
break;
case TouchPhase.Moved:
secondpoint = firstTouch.position;
//Mainly, about rotate camera. For example, for Screen.width rotate on 180 degree
xAngle = xAngTemp + (secondpoint.x - firstpoint.x) * 180.0f / Screen.width;
yAngle = yAngTemp - (secondpoint.y - firstpoint.y) * 90.0f / Screen.height;
//Rotate camera
this.transform.rotation = Quaternion.Euler(yAngle, xAngle, 0.0f);
character.transform.rotation = Quaternion.Euler(yAngle, xAngle, 0.0f);
break;
}
}
}
}