Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Запускаешь Runnable, который будет срабатывать, скажем, раз в секунду и устанавливаешь координаты новой локации таким образом:
x = r * cos(3.14 * k / n)
y = y
z = r * sin(3.14 * k / n)
где r - нужный тебе радиус, k - счетчик, который увеличивается на единицу с каждой итерацией и n - число, сколько итераций нужно, чтобы пройти полный круг
private double x = 11.655;
private double y = 87;
private double z = -32.191;
private World w = Bukkit.getWorld("world");
private ArmorStand as = (ArmorStand) w.spawnEntity(new Location(w, 11.546, 87, -32.052), EntityType.ARMOR_STAND);
private double r = 1;
private double k = 1;
private double n = 10;
@Override
public void run() {
k++;
String name = "§cИгроков: §e" + Bukkit.getOnlinePlayers().size();
as.setCustomName(name);
x = r * Math.cos(3.14 * k / n);
z = r * Math.sin(3.14 * k / n);
as.teleport(new Location(w, x, y, z));
}
Кажется, тебе нужно сохранить оригинальную локацию и каждый раз по новой прибавлять к ней те x и z, которые тебе подкинули выше, т.е.Что-то не видно стойку. Без расчётов она видна.Код:private double x = 11.655; private double y = 87; private double z = -32.191; private World w = Bukkit.getWorld("world"); private ArmorStand as = (ArmorStand) w.spawnEntity(new Location(w, 11.546, 87, -32.052), EntityType.ARMOR_STAND); private double r = 1; private double k = 1; private double n = 10; @Override public void run() { k++; String name = "§cИгроков: §e" + Bukkit.getOnlinePlayers().size(); as.setCustomName(name); x = r * Math.cos(3.14 * k / n); z = r * Math.sin(3.14 * k / n); as.teleport(new Location(w, x, y, z)); }
int adjustedX = x + r * Math.cos(3.14 * k / n);
int adjustedZ = z + r * Math.sin(3.14 * k / n);
as.teleport(new Location(w, adjustedX, y, adjustedZ));
Спасибо.Кажется, тебе нужно сохранить оригинальную локацию и каждый раз по новой прибавлять к ней те x и z, которые тебе подкинули выше, т.е.
А вообще, если стойка всегда будет крутиться только вокруг одной локации, тебе стоит просчитать все локации заранее и записать их в какой-нибудь массив, дабы сервер не считал это всё раз за разом.Код:int adjustedX = x + r * Math.cos(3.14 * k / n); int adjustedZ = z + r * Math.sin(3.14 * k / n); as.teleport(new Location(w, adjustedX, y, adjustedZ));
А можно и если можно, то как рассчитать yaw и pitch, чтобы локация была всегда слева?Кажется, тебе нужно сохранить оригинальную локацию и каждый раз по новой прибавлять к ней те x и z, которые тебе подкинули выше, т.е.
А вообще, если стойка всегда будет крутиться только вокруг одной локации, тебе стоит просчитать все локации заранее и записать их в какой-нибудь массив, дабы сервер не считал это всё раз за разом.Код:int adjustedX = x + r * Math.cos(3.14 * k / n); int adjustedZ = z + r * Math.sin(3.14 * k / n); as.teleport(new Location(w, adjustedX, y, adjustedZ));
Спасибо, а как сделать чтобы телепортировало в другую сторону?yaw = 180 * k / n - 90
pitch = 0
Спасибо, тема закрыта.x = x + r * cos(Math.PI * (60 - k) / n)
z = z + r * sin(Math.PI * (60 - k) / n)
yaw = 180 * (60 - k) / n + 90
pitch = 0