У меня есть простая сцена, когда игроки краны, мяч меняет направления на 90 градусов; Мой код работает, но это не является совершенным, главным вопросом является «водопроводная» обнаруженияединство касание мобильный выпуск
необходимо использовать Coroutine
, чтобы сделать паузу между нажатиями, но пауза 0.25sec
является большим и время отклика медленно, в некоторых случаях, но если попытаться для уменьшения времени паузы он запускает код так быстро, что он больше не отличается кранами; Я пробовал также с touch.phase == began
и touch.phase.Stationary
, но это также не работает
Я хочу, чтобы добиться эффекта, когда вы нажмете, он меняет направление один раз, даже если вы держите его.
Есть ли у кого-нибудь лучшее решение для обнаружения кранов?
using UnityEngine;
using System.Collections;
public class playerController : MonoBehaviour {
public float speed = 2f;
public float tapPauseTime = .25f;
Rigidbody rb;
bool timerOn;
bool goingRight;
void Awake(){
rb = GetComponent<Rigidbody>();
timerOn = false;
goingRight = false;
}
// Update is called once per frame
void Update()
{
if (Input.touchCount == 1 && !timerOn && !goingRight) {
rb.velocity = Vector3.zero;
rb.angularVelocity = Vector3.zero;
rb.velocity = new Vector3 (speed, 0, 0);
timerOn = true;
goingRight = true;
StartCoroutine(TapPause());
}
if(Input.touchCount == 1 && !timerOn && goingRight)
{
rb.velocity = Vector3.zero;
rb.angularVelocity = Vector3.zero;
rb.velocity = new Vector3(0,0,speed);
timerOn=true;
goingRight = false;
StartCoroutine(TapPause());
}
}
IEnumerator TapPause(){
yield return new WaitForSeconds(tapPauseTime);
timerOn = false;
}
}
Отлично, он работал как шарм :) это именно то, что я искал, спасибо! – drapichrust