Вы можете определить коллекцию, которая определяет, какие входные данные обеспечивают какое направление:
var directionMap = new List<(bool isInputPressed, int directionalValue)>
{
(Input.GetKey(right_button), 1),
(Input.GetKey(left_button), -1)
};
И затем, чтобы получить направление, вы просто получаете directionalValue
из записей в коллекции, где isInputPressed
истинно:
var direction = directionMap.Where(x => x.isInputPressed).Sum(x => x.directionalValue);
Использование .Where()
может потенциально привести к неожиданным результатам, если обе кнопки будут нажаты одновременно. Если этого никогда не произойдет, вы можете изменить вышеприведенное, используя вместо него .SingleOrDefault()
:
var direction = directionMap.SingleOrDefault(x => x.isInputPressed).directionalValue;
Обратите внимание, что это приведет к исключению, если одновременно нажимается более одной кнопки. Вы можете обработать это исключение в блоке try / catch. Или вы могли бы убедиться, что только одна нажата, прежде чем вызвать .SingleOrDefault()
, а затем продолжить соответственно.