확인 일 :이상한 점은이 코드를 가지고, 투명 테두리 SKSpriteNode으로
SKSpriteNode *flagTile = [((BGSKView *) self.skView).tileSprites[@"flag"] copy];
flagTile.anchorPoint = CGPointZero;
flagTile.size = touchedNode.size;
flagTile.name = @"flag";
[touchedNode addChild:flagTile];
사용자가 필드 (AN SKSpriteNode) 그것의 아이들에게 또 하나 개의 스프라이트 추가 탭 - 플래그 노드를. touchedNode 텍스처 크기가 80x80, 플래그 텍스처가 80x80 ... 완전히 동일하지만 플래그 텍스처에 투명 테두리가있는 것이 가장 큰 차이점입니다. 여기
:
그러나 이상한 일이 발생합니다 플래그 노드가 항상 있다 자사의 실제 touchedNode보다는 지역 작은 (호출 "tappable"수)과 그 위치는 현물입니다 이상한 것.
과 같이 : 내 모든 레이어의
구조 다음과 같이 있습니다 : compoundNode 두 레이어 포함 - 전체 트리의 크기 조정이 엑스 스케일이 필요하고 yScale이 (compoundNode을 설정할 때와 B.). 크기가 다른 조작은 없습니다.
내가 뭘 잘못하고 있니?
정말로 필요한 것은 flagTile 가능한 영역을 touchedNode의 크기가되도록하는 것입니다. 그리고 하나 더 :이 하나
SKSpriteNode *flagTile = [((BGSKView *) self.skView).tileSprites[@"flag"] copy];
: 나는 대체하는 경우는
SKSpriteNode *flagTile = [SKSpriteNode spriteWithColor:[UIColor clearColor] size:touchedNode.size];
그것을 잘 작동합니다.
clearColor 스프라이트를 만든 후에도 텍스처 속성을 변경하려고 시도했지만 아무것도 작동하지 않습니다.
감사합니다.
와우! 고마워요,하지만이게 정말 유일한 해결책입니까? 국경과 추가 색상이없는 투명 이미지를 사용해야하는 복잡한 그래픽이 있다면 어떨까요? – AndrewShmig
모두 코드 구조에 따라 다릅니다. 당신이 할 수있는 몇 가지가 있습니다. 알파 + 1 레이어를 사용하는 대신 대각선 모서리에 작은 점을 넣을 수 있습니다. 또 다른 클리너 옵션은 스프라이트 노드를 그대로 사용하고 터치하는 것을 처리하기 위해 더 큰 보이지 않는 노드를 추가하는 것입니다. – sangony
깃발 이미지를 사용하여 깃발의 알파를 만들 수 있습니다.이 깃발은 검은 색 바탕에 하얀 깃발이 있어야합니다. 그런 다음 포토샵에서 이것을 결합하여 32 비트 PNG 파일을 만들 수 있습니다. 기본 플래그를 단색 배경에 두는 것이 가장 좋습니다. 색상은 알파에 의해 제거되므로 중요하지 않습니다. 그런 식으로 코너 도트로 끝나지 않고 크기 조정이 전체 이미지 (투명 픽셀 없음)에서 수행됩니다. – fuzzygoat