Я работаю над игрой, в которой есть некоторые сопрограммы, которые заставляют персонажа прыгать, атаковать и т. Д., Вот пример прыгучей сопрограммы:
private IEnumerator Jump()
{
rb.velocity = Vector2.zero;
moveHorizontal = 0f;
rb.gravityScale = 0f;
actualPlatform.actualPlatform = null;
anim.SetBool("jumping", true);
currentPlayerState = PlayerState.jump;
float playerMoveY = transform.position.y + jumpHigh;
float actualPlayerY = transform.position.y;
while (transform.position.y <= playerMoveY)
{
transform.position = new Vector2(transform.position.x, actualPlayerY);
actualPlayerY = actualPlayerY + 0.1f;
yield return null;
}
rb.gravityScale = 1f;
dustEffectReady = true;
}
на рабочем столе, эта сопрограмма работает хорошо и быстро, нокогда я собираю apk и пробую его, он медленный и отстающий, может быть, это что-то про FPS?кто-нибудь знает как это решить?я должен просто использовать обычные функции?
РЕДАКТИРОВАТЬ: я использую эту библиотеку, чтобы использовать метод салфетки (функция, которая вызывает эту сопрограмму) https://unity3d.college/2018/04/24/mobile-swipe-detection-in-unity3d/
затем я вызываю его сэта функция:
private void SwipeDetector_OnSwipe(SwipeData data)
{
if (data.Direction == SwipeDirection.Up && isGrounded && currentPlayerState == PlayerState.idle)
StartCoroutine(Jump());
else if (data.Direction == SwipeDirection.Down && currentPlayerState == PlayerState.idle)
StartCoroutine(SlideDown());
else if (data.Direction == SwipeDirection.Left && currentPlayerState == PlayerState.idle)
StartCoroutine(weaponController.Attack());
else if (data.Direction == SwipeDirection.Right && currentPlayerState == PlayerState.idle)
StartCoroutine(weaponController.Attack());
}