2014-12-24 1 views
3

일부 경우에는 기존 이미지의 절반 만 표시해야하는 스프라이트 키트 프로젝트에서 작업 중입니다.스프라이트 키트 - 스프라이트/텍스처/이미지의 절반을 표시하는 방법

스프라이트의 프레임을 작게 만들려고했지만 이미지가 늘어납니다.

스프라이트/이미지/텍스처의 절반 만 표시하기 위해 마스크 등을 사용할 수 있습니까?

+0

예는 수에 필요한 요소를 추가 할 수 있습니다. [centerRect] (https://developer.apple.com/library/mac/documentation/SpriteKit/Reference/SKSpriteNode_Ref/index.html#//apple_ref/occ/instp/SKSpriteNode/centerRect)로 할 수 있습니다. –

답변

7

그래서 이미지, 텍스처, 스프라이트의 절반 만 표시하려면 누군가 SKCropNode를 사용해야합니다. 유일한 현명한 방법은 미리 정의 된 크기로 자르기가 아닌 반으로 시작하여 필요한 스프라이트를 자르는 것입니다. 이는 마스크 노드 위치를 설정하여 수행 할 수 있습니다.

1) 그 질감/이미지로 SkSpriteNode 만들기 :

// Obj-C 
SKSpriteNode *skelet = [SKSpriteNode spriteNodeWithImageNamed:imageName]; 

// Swift 
let skelet = SKSpriteNode(imageNamed: imageName) 

2)를 작성 SKCropNode :

// Obj-C 
SKCropNode * cropNode = [SKCropNode node]; 

// Swift 
let cropNode = SKCropNode() 

3)을 만드는 마스크

// Obj-C 
SKSpriteNode *mask = [SKSpriteNode spriteNodeWithColor:[UIColor blackColor] size:CGSizeMake(skelet.frame.size.width/2, skelet.frame.size.height)]; 

// Swift 
let mask = SKSpriteNode(color: .black, size: CGSize(width: skelet.frame.size.width/2, height: skelet.frame.size.height)) 

** 집합 필요한 결과의 절반에 마스크 위치를 지정합니다 (스켈 레트의 절반이 필요 -> 마스크 위치를 반으로 설정). skelet ")의 절반

// Obj-C 
mask.position = CGPointMake(skelet.frame.size.width/4, 0); 

// Swift 
mask.position = CGPoint(x: skelet.frame.size.width/4, y: 0) 

4로 분할 당신이 skelet 노드의 중앙에 있지 않은 것으로 마스크의 중심을 필요로하기 때문에, 그러나 skelet의 절반의 절반 (알림로 이동 마스크 노드는 기본 앵커 포인트 0.5 0.5로 작동합니다. 그래서 영점은 스켈레톤 노드의 중심에 해당합니다.

4) 작물 노드

// Obj-C 
[cropNode addChild:skelet]; 
[cropNode setMaskNode:mask]; 
[self addChild:cropNode]; 

// Swift 
cropNode.addChild(skelet) 
cropNode.maskNode = mask 
self.addChild(cropNode) 
관련 문제