flexible instance movement
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
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 };
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user