во-первых, я извиняюсь за мой английский впереди
Я хочу, чтобы игрок двигался, когда он вводит одно касание, и использовал навык только при вводе двух касаний.
Ниже код выглядит нормально, за исключением случаев, когда я ввожу два касания, затемснял первое касание * и повторно ввел касание, все пошло не так.
но если я снял сильный текст второе касание, то оно работает нормально.
public class Test : MonoBehaviour {
private void Update() {
if(Input.touchCount > 0) {Movement();}
if(Input.touchCount > 1) {Skill();}
}
private void Movement() {
Vector2 inputPos = Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position);
transform.position = Vector3.MoveTowards(transform.position, inputPos, 30f * Time.deltaTime);
}
private void Skill() {print("skill fired");}
Working as Intended
// [1]: https://imgur.com/ngjoabY
// [2]: https://imgur.com/kkDAGEW
Problem the second reinput should fire skill instead of moving toward that
// [3]: https://imgur.com/gD0x8rP
// [4]: https://imgur.com/o06mJgs
}
после того, как вы дадите ему два касания и снимите первое, второе касание станет первым, и оно попадет в if (Input.touchCount> 0) {Movement ();}.
Так что на этом этапе, если вы введете снова, то должно быть GetTouch (1), верно?
но этот повторный ввод второго прикосновения становится GetTouch (0) !!
Таким образом, объект, который должен использовать навык, перемещается на вторую позицию ввода. Я сделал все, что мог, но не смог найтиРешение.
Я подумал, что если бы я мог очистить буфер для входных касаний, я мог бы сделать это, но он имел только методы Get.
И Input.simulateMouseWithTouches Это не сработало.
Переменные класса касания не могут даже сравниваться с нулем.