#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()
}