38 lines
1.1 KiB
JavaScript
38 lines
1.1 KiB
JavaScript
import { ButtonState, InputButton } from "@minecraft/server";
|
|
|
|
export class PlayerMovement {
|
|
inputInfo;
|
|
|
|
constructor(player) {
|
|
this.player = player;
|
|
this.inputInfo = player.inputInfo;
|
|
}
|
|
|
|
isJumping() {
|
|
return this.inputInfo.getButtonState(InputButton.Jump) === ButtonState.Pressed;
|
|
}
|
|
|
|
isSneaking() {
|
|
return this.inputInfo.getButtonState(InputButton.Sneak) === ButtonState.Pressed;
|
|
}
|
|
|
|
getMovementVector() {
|
|
return this.inputInfo.getMovementVector();
|
|
}
|
|
|
|
getMajorDirectionFacing() {
|
|
const { x, y, z } = this.player.getViewDirection();
|
|
const xzAngle = Math.atan2(z, x) * (180 / Math.PI);
|
|
if (y > 0.7)
|
|
return { x: 0, y: 1, z: 0 };
|
|
if (y < -0.7)
|
|
return { x: 0, y: -1, z: 0 };
|
|
if (xzAngle >= -45 && xzAngle < 45)
|
|
return { x: 1, y: 0, z: 0 };
|
|
else if (xzAngle >= 45 && xzAngle < 135)
|
|
return { x: 0, y: 0, z: 1 };
|
|
else if (xzAngle >= 135 || xzAngle < -135)
|
|
return { x: -1, y: 0, z: 0 };
|
|
return { x: 0, y: 0, z: -1 };
|
|
}
|
|
} |