GLKit에서 사용자의 손가락을 따라 가야합니다. 두 점 사이에 arctan을 사용하여 각도를 그리는 라디안을 계산합니다.GLKit을 사용하여지도에서 스프라이트의 중심을 중심으로 회전하는 방법
여기 트릭의 일부는 물체를 손가락의 중앙에 오도록 유지하는 것입니다. 그래서 앵커 포인트 (anchor point)라는 아이디어를 도입하여 사물이나 원점을 기준으로 물건을 그릴 수있게했습니다. 내 목표는 스프라이트를 제 위치로 이동시킨 다음 회전시키는 것입니다. 내 렌더러에 다음 코드가있다.
// lets adjust for our location based on our anchor point.
GLKVector2 adjustment = GLKVector2Make(self.spriteSize.width * self.anchorPoint.x,
self.spriteSize.height * self.anchorPoint.y);
GLKVector2 adjustedPosition = GLKVector2Subtract(self.position, adjustment);
GLKMatrix4 modelMatrix = GLKMatrix4Multiply(GLKMatrix4MakeTranslation(adjustedPosition.x, adjustedPosition.y, 1.0), GLKMatrix4MakeScale(adjustedScale.x, adjustedScale.y, 1));
modelMatrix = GLKMatrix4Rotate(modelMatrix, self.rotation, 0, 0, 1);
effect.transform.modelviewMatrix = modelMatrix;
effect.transform.projectionMatrix = scene.projection;
또 다른 한 가지 사실은 내 스프라이트가 텍스처 별칭에 있다는 것입니다. 내 회전을 꺼내면 내 스프라이트가 내 손가락 아래 가운데에 정확히 그려집니다. 내 프로젝트 매트릭스는 GLKMatrix4MakeOrtho (0, CGRectGetWidth (self.frame), CGRectGetHeight (self.frame), 0, 1, -1)입니다. 그래서 그것은 UIkit과 내장 된 뷰와 일치합니다.