#unity3d
#unity3d
Вопрос:
у нас в игре есть кнопка dash. Если мы нажмем кнопку, кнопка dash будет работать хорошо, но проблема в том, что если мы нажмем в любом месте экрана, она тоже будет работать! Мы хотим работать с этой функцией только с помощью кнопки. Кто-нибудь, пожалуйста, помогите нам?
Код:
public void Dash()
{
if (Input.GetMouseButtonDown(0))
{
activeMoveSpeed = dashSpeed;
dashCounter = dashLength;
}
if (dashCounter > 0)
{
canShoot = false;
dashCounter -= Time.deltaTime;
if (dashCounter <= 0)
{
canShoot = false;
activeMoveSpeed = speed;
dashCoolCounter = dashCoolDown;
}
}
if (dashCoolCounter > 0)
{
canShoot = false;
dashCoolCounter -= Time.deltaTime;
}
}
private void FixedUpdate()
{
Movement();
Dash();
}
Комментарии:
1. Ваша проблема, вероятно, связана с проверкой, находится ли мышь в этом фрейме на кнопке. Разделите свой код на выполнение тире. И проверка на наличие того, что обычно находится, скажем, в обновлении. Затем ваша кнопка пользовательского интерфейса может вызвать код dash все остальное может вызвать проверку на dash которая если будет удовлетворена вызовет код dash
2. По какой-то причине вы звоните
Dash
при каждомFixedUpdate
звонке и проверяете тамif (Input.GetMouseButtonDown(0))
, что будет верно в любом месте экрана
Ответ №1:
Указанная вами функция OnClick
будет вызываться при каждом нажатии кнопки.
В настоящее время вы вообще не используете кнопку. Я думаю, вы имели в виду что-то вроде этого ( StartDash()
это функция, которая должна быть выбрана в OnClick):
public void StartDash()
{
activeMoveSpeed = dashSpeed;
dashCounter = dashLength;
}
private void DoDash()
{
if (dashCounter > 0)
{
canShoot = false;
dashCounter -= Time.deltaTime;
if (dashCounter <= 0)
{
canShoot = false;
activeMoveSpeed = speed;
dashCoolCounter = dashCoolDown;
}
}
if (dashCoolCounter > 0)
{
canShoot = false;
dashCoolCounter -= Time.deltaTime;
}
}
private void FixedUpdate()
{
Movement();
DoDash();
}
Взгляните на соответствующие страницы в документации Unity: