- 37
- 1
- 1
Новый вопрос, у меня есть код катсцены который переводит меня в режим наблюдателя и каждый тик пока я не достигнку цели телепортирует на координаты и т.д., НО ЭТО НЕ ИДЕАЛ! (не плавно). Вот код вычисления следующей точки и телепортации и т.д. :
Код класса;:
private double OrigX, OrigY, OrigZ;
private double CurrX, CurrY, CurrZ;
private double TargX, TargY, TargZ;
private double speed;
private int use;
@SubscribeEvent
public static void tick(TickEvent.ServerTickEvent event) {
if (event.phase == TickEvent.Phase.END) {
if (camera.use == 1) {
camera.updateCamera();
world.excuteCommand("gamemode spectator @a");
}
}
}
public void setCamera(double startX, double startY, double startZ, double endX, double endY, double endZ,double speed) {
this.OrigX = startX;
this.OrigY = startY;
this.OrigZ = startZ;
this.TargX = endX;
this.TargY = endY;
this.TargZ = endZ;
this.CurrX = startX;
this.CurrY = startY;
this.CurrZ = startZ;
this.speed = speed;
this.use = 1;
}
public void updateCamera() {
if (use == 1) {
CurrX += (TargX - CurrX) * speed;
CurrY += (TargY - CurrY) * speed;
CurrZ += (TargZ - CurrZ) * speed;
all.lookAt(EntityAnchorArgument.Anchor.EYES, new Vec3(TargX, TargY, TargZ));
all.teleportTo(CurrX, CurrY, CurrZ);
if (Math.abs(CurrX - TargX) < speed && Math.abs(CurrY - TargY) < speed && Math.abs(CurrZ - TargZ) < speed) {
use = 0;
}
}
}