diff --git a/packages/frontend/src/pages/room.vue b/packages/frontend/src/pages/room.vue index 70d55b7456..e449811130 100644 --- a/packages/frontend/src/pages/room.vue +++ b/packages/frontend/src/pages/room.vue @@ -212,8 +212,8 @@ const resolutionRaw = prefer.model('world.resolution'); const resolutionAutoValue = computed(() => deviceKind !== 'desktop' ? 0.5 : 1); const resolution = computed(() => resolutionRaw.value ?? resolutionAutoValue.value); -//const useVirtualJoystick = isTouchUsing && (deviceKind === 'smartphone' || deviceKind === 'tablet'); -const useVirtualJoystick = true; +const useVirtualJoystick = isTouchUsing && (deviceKind === 'smartphone' || deviceKind === 'tablet'); +//const useVirtualJoystick = true; const wasdVec = { x: 0, y: 0 }; let isDashing = false; diff --git a/packages/frontend/src/world/room/controller.ts b/packages/frontend/src/world/room/controller.ts index d58887bb7f..05a1f6d0fd 100644 --- a/packages/frontend/src/world/room/controller.ts +++ b/packages/frontend/src/world/room/controller.ts @@ -191,6 +191,8 @@ export class RoomController { ev.preventDefault(); ev.stopPropagation(); + this.canvas!.focus(); + this.pointerDownPosition = { x: ev.offsetX, y: ev.offsetY }; this.canvas!.setPointerCapture(ev.pointerId); diff --git a/packages/frontend/src/world/room/engine.ts b/packages/frontend/src/world/room/engine.ts index e06c591dd0..10c58a6ae2 100644 --- a/packages/frontend/src/world/room/engine.ts +++ b/packages/frontend/src/world/room/engine.ts @@ -301,13 +301,13 @@ export class RoomEngine extends EventEmitter { this.camera.inputs.clear(); if (options.useVirtualJoystick) { - this.camera.inputs.add(new FreeCameraManualInput({ + this.camera.inputs.add(new FreeCameraManualInput(this.scene, { moveSensitivity: 0.015 * WORLD_SCALE, - rotationSensitivity: 0.0005, + rotationSensitivity: 0.0007, })); this.camera.inertia = 0.75; } else { - this.camera.inputs.add(new FreeCameraManualInput({ + this.camera.inputs.add(new FreeCameraManualInput(this.scene, { moveSensitivity: 0.002 * WORLD_SCALE, rotationSensitivity: 0.0003, })); diff --git a/packages/frontend/src/world/utility.ts b/packages/frontend/src/world/utility.ts index 45b414f531..cd4583eb73 100644 --- a/packages/frontend/src/world/utility.ts +++ b/packages/frontend/src/world/utility.ts @@ -620,14 +620,16 @@ export function getRgb(hex: string | number): [number, number, number] | null { export class FreeCameraManualInput implements BABYLON.ICameraInput { public camera: BABYLON.FreeCamera; + private scene: BABYLON.Scene; private moveSensitivity: number; private rotationSensitivity: number; private moveVector = BABYLON.Vector3.Zero(); - constructor(options: { + constructor(scene: BABYLON.Scene, options: { moveSensitivity?: number; rotationSensitivity?: number; }) { + this.scene = scene; this.moveSensitivity = options.moveSensitivity ?? 0.01; this.rotationSensitivity = options.rotationSensitivity ?? 0.01; } @@ -648,7 +650,7 @@ export class FreeCameraManualInput implements BABYLON.ICameraInput