Итак, я делаю игру в единстве, в которой объект будет разбиваться в направлении (единичном векторе) щелчка мышью игрока.Основываясь на переменных скорости и тире, которые я сделал и установил в инспекторе, он обычно будет работать, так как расстояние, разбитое объектом, и его скорость обычно постоянны.Однако иногда расстояние до черты объекта будет выключено.Я попытался решить проблему путем регистрации расстояния между приборной панелью и скорости объекта, и я обнаружил, что иногда одна или обе переменные могут быть случайным значением по какой-то причине, по которой я пропускаю.На большинстве кликов, хотя переменные имеют одинаковое число.Вот мой код:
[RequireComponent(typeof(Rigidbody2D))]
public class DashController : MonoBehaviour
{
Rigidbody2D rigidbody;
public float dashSpeed;
public float dashTime; //dash time for inspector use
float codeDashTime; //dash time for code use
bool dashing;
Vector2 direction;
Vector2 startPosition;
Vector2 endPosition;
float distance;
private void Start()
{
rigidbody = GetComponent<Rigidbody2D>();
codeDashTime = dashTime;
dashing = false;
}
private void Update()
{
if (Input.GetMouseButtonDown(0))
{
//need to subtract the current postion from the target postion
direction = (Camera.main.ScreenToWorldPoint(Input.mousePosition) - this.transform.localPosition);
startPosition = this.transform.localPosition; // used to see the distance player dashes
dashing = true;
}
if (dashing)
{
Dash();
}
}
void Dash()
{
if (codeDashTime > 0)
{
rigidbody.velocity = direction.normalized * dashSpeed;
codeDashTime -= Time.deltaTime;
}
else
{
Debug.Log(rigidbody.velocity.magnitude);// used to see the velocity the player travels at
Debug.Log(direction.normalized.magnitude);
rigidbody.velocity = Vector2.zero;
endPosition = this.transform.localPosition; // used to see the distance player dashes
distance = Vector2.Distance(startPosition, endPosition);// used to see the distance player dashes
Debug.Log(distance); // used to see the distance player dashes
dashing = false;
codeDashTime = dashTime;
}
}
}
Извините, если мой код немного перемешан.Я много чего переделывал, тестируя разные решения, но ничего не получалось.Мое лучшее предположение, что, возможно, что-то с кадрами портит codeDashTime, но я слишком новичок в Unity и C #, чтобы знать.Любая помощь приветствуется, спасибо.