소스 검색

[ts][phaser] Improved physics2 example transforming coordinates between spaces

Davide Tantillo 1 년 전
부모
커밋
9f40b7f56b
1개의 변경된 파일15개의 추가작업 그리고 5개의 파일을 삭제
  1. 15 5
      spine-ts/spine-phaser/example/physics2.html

+ 15 - 5
spine-ts/spine-phaser/example/physics2.html

@@ -35,14 +35,24 @@
 
         let lastX, lastY;
         gameObject.on('dragstart', (pointer, dragX, dragY) => {
-          lastX = gameObject.input.dragStartX;
-          lastY = gameObject.input.dragStartY;
+          lastX = dragX;
+          lastY = dragY;
         })
 
         gameObject.on('drag', (pointer, dragX, dragY) => {
-          gameObject.x += (dragX - lastX);
-          gameObject.y += (dragY - lastY);
-          gameObject.skeleton.physicsTranslate((dragX - lastX) / gameObject.scale, (dragY - lastY) / gameObject.scale)
+          // moving gameObject in its space
+          gameObject.x += dragX - lastX;
+          gameObject.y += dragY - lastY;
+
+          // converting drag movement to skeleton space
+          const pointBefore = { x: lastX, y: lastY };
+          const pointAfter = { x: dragX, y: dragY };
+          gameObject.phaserWorldCoordinatesToSkeleton(pointBefore);
+          gameObject.phaserWorldCoordinatesToSkeleton(pointAfter);
+
+          // transfer drag effect on physics contraints using physicsTranslate (we won't move the skeleton)
+          gameObject.skeleton.physicsTranslate(pointAfter.x - pointBefore.x, pointAfter.y - pointBefore.y);
+
           lastX = dragX;
           lastY = dragY;
         })