Как отобразить спрайт на экране в зависимости от азимута

#android #kotlin #game-development #azimuth

#Android #kotlin #разработка игры #азимут

Вопрос:

Я создаю игру на Android, используя SurfaceView.

В настоящее время я получаю азимут устройства в градусах (от -180 до 180), который работает правильно. Я хочу иметь возможность отображать спрайт на экране, когда вы поворачиваетесь к его местоположению, которое прямо сейчас я устанавливаю случайным образом между -180 и 180.

Используя этот код, он работает, но он исчезает с экрана, когда местоположение не равно 0, и вы повернули на 180 или ниже -180. Есть ли способ обойти это?

    private fun setPositionOnScreen(azimuth: Double) {
        val distanceToLocation = azimuth - location
        x = (distanceToLocation * (screenWidth / 180)).toInt()
    }
  

Ответ №1:

 private fun setPositionOnScreen(azimuth: Double) {
    var distanceToZombie = azimuth - location
    if(distanceToZombie < -180) distanceToZombie  = 360
    else if(distanceToZombie > 180) distanceToZombie -= 360
    x = (distanceToZombie * (screenWidth / 180)).toInt()
}