Как телепортировать игрока на два блока слева от него? - PullRequest
1 голос
/ 21 июня 2020

Я пробовал несколько вещей, например использование векторов, но у меня это не сработало. Затем я попытался выполнить поиск по inte rnet, но это тоже не сработало.

Vector direc = l.getDirection().normalize();
direc.setY(l.getY());
direc.normalize();
direc.multiply(-1);
l.add(direc);

Player#teleport(l.getBlock().getLocation());
// or
Player#teleport(l);

Ответы [ 2 ]

1 голос
/ 22 июня 2020

Используйте Vector # rotateAroundY , чтобы повернуть вектор направления игрока на 90 градусов влево.

Vector dir = player.getLocation().getDirection();     // get player's direction vector
dir.setY(0).normalize();                              // get rid of the y component
dir.rotateAroundY(Math.PI / 2);                       // rotate it 90 degrees to the left
dir.multiply(2);                                      // make the vector's length 2
Location newLocation = player.getLocation().add(dir); // add the vector to the player's location to get the new location
0 голосов
/ 21 июня 2020
Location location = player.getLocation();
Vector direction = location.getDirection();
direction.normalize();

float newZ = (float)(location.getZ() + (2 *  Math.sin(Math.toRadians(location.getYaw() + 90 * direction)))); //2 is your block amount in Z direction
 
float newX = (float)(location.getX() + (Math.cos(Math.toRadians(location.getYaw() + 90 * direction))));

Вы должны знать, в каком направлении вы хотите телепортировать игрока

...