스프라이트 (rect
)가 화면의 터치 위치를 향하도록 회전 중입니다. 코드는 작동하지만 스프라이트가 수직으로 갈수록 더 커지는 정도의 오프셋이 있습니다. 내 문제를 아주 분명하게 보여주는 이미지를 아래에 추가했습니다.ccsprite 회전 위치가 접촉 위치로 회전 할 때 오프셋.
빨간색 점은 오프셋 문제를 표시하기 위해 포토샵에서 추가 한 터치 위치입니다. 볼 수있는 유일한 스프라이트는 사각형입니다 (IE rect
).
내가 90도 각도에있을 때 오프셋이 가장 분명합니다. 그러면 점차 가까워 질수록 서서히 사라집니다.
스프라이트가 터치 위치를 정확하게 향하도록하려면 어떻게해야합니까? 또는이 오프셋을 어떻게 수정할 수 있습니까?
- (void) ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInView:[touch view]];
location = [[CCDirector sharedDirector] convertToGL:location];
float angle = atan2f(location.y-rect.position.y, location.x-rect.position.y);
angle = CC_RADIANS_TO_DEGREES(angle);
angle *=-1;
rect.rotation = angle;
float distance = sqrtf(pow((location.x-rect.position.x), 2)+pow(location.y-rect.position.y, 2));
rect.scaleX = distance;
}
하는 구형 무엇인가? 당신이 보여주는 2 개의 스프라이트와 어떤 관련이 있습니까? – sergio
rect는 스프라이트입니다. 터치 위치가 rect의 각도와 어떤 관련이 있는지 보여주기 위해 포토샵에 추가 한 빨간 원. –