Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | import {MyAvatar} from './MyAvatar'; import {InteractionEvent} from 'pixi.js'; import {PLAYER_SPEED} from './metaData/DataInterface'; import {Joystick} from './Joystick'; export class PlayerPointer { public pointerdown: boolean; private startPosX: number; private startPosY: number; private player: MyAvatar; private joystick?: Joystick; constructor(player: MyAvatar, joystick?: Joystick) { this.pointerdown = false; this.startPosX = 0; this.startPosY = 0; this.player = player; if (joystick) this.setJoystick(joystick); this.initailizePointer(); } public initailizePointer(): void { this.player.world.interactive = true; this.player.world .on('touchstart', this.onPointerDown.bind(this)) .on('touchmove', this.onPointerMove.bind(this)) .on('touchend', this.onPointerUp.bind(this)) .on('touchendoutside', this.onPointerUp.bind(this)); } private onPointerDown(e: InteractionEvent) { this.pointerdown = true; const pointerPos = e.data.getLocalPosition(this.player.viewport.parent); this.startPosX = pointerPos.x; this.startPosY = pointerPos.y; if (this.joystick) this.joystick.revealJoystick(this.startPosX, this.startPosY); } private onPointerMove(e: InteractionEvent) { if (this.pointerdown === false) return; const point = e.data.getLocalPosition(this.player.viewport.parent); const xDiff = point.x - this.startPosX; const yDiff = point.y - this.startPosY; const diagonal = Math.sqrt(Math.pow(xDiff, 2) + Math.pow(yDiff, 2)); this.player.vx = PLAYER_SPEED * (xDiff / diagonal); this.player.vy = PLAYER_SPEED * (yDiff / diagonal); this.player.scale.x = this.player.vx < 0 ? -1 : 1; if (this.joystick) this.joystick.setSmallCirclePosition({x: xDiff, y: yDiff}, diagonal); } private onPointerUp() { this.pointerdown = false; this.player.vx = 0; this.player.vy = 0; if (this.joystick) this.joystick.hideJoystick(); } private setJoystick(joystick: Joystick) { this.joystick = joystick; this.player.viewport.parent.addChild(joystick); } } |