2013-10-07 8 views
-2

두 개의 동일한 모양이 장면의 하단에 있고 일치시킬 다른 하나의 장면이 장면의 위쪽에있는 경우 모양 인식을 위해 SpriteKit 게임을 만들었습니다. 모양을 생성하는 코드가 포함 된 다른 클래스의 메서드를 호출하여 이러한 모양을 만들었습니다.스프라이트를 이동 가능하게 만들기

나는 모든 것을 올바른 방법으로 할 수 있으며 잘 작동합니다. 하지만 윗면 모양을 고정시키는 방법을 찾지 못했습니다. 평균 사용자는 일치를 위해 아래쪽 측면 모양 만 위쪽면 모양으로 드래그 할 수 있어야하지만 아래쪽 모양과 일치하도록 위쪽면 모양을 드래그 할 수 없어야합니다. 나는 지금까지 SpriteKit 프로그래밍 안내서에서 Apple에 의해 조사했지만 위의 작업을 수행하는 데 도움이되는 단서는 없습니다.

누구든지 도와주십시오.

답변

1

쉬운 방법은 만들 때 이름을 설정하는 것입니다. 상수를 사용하면 쉬운 방법이므로 올바른 이름을 추가/확인하고 있는지 확인하십시오.

static NSString * const kCanMoveMe = @"movable"; 
static NSString * const kCanNotMoveMe = @"not-movable"; 

// for example 
SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:imageName]; 
sprite.name = kCanMoveMe 

SKSpriteNode *sprite2 = [SKSpriteNode spriteNodeWithImageNamed:imageName]; 
sprite.name = kCanNotMoveMe 

그런 다음 이름을 터치하면 이동 여부를 알 수 있습니다.

+0

해결되었습니다. 감사합니다 – Programmer

+0

이것은 작동하지만, SKSpriteNode를 서브 클래 싱하고'isMoveable' BOOL 속성을 추가하는 것이 더 좋은 방법 일 것입니다. 'name' 속성을 사용하는 것은 해커의 일종입니다. 이제는 속성의 이름이 더 이상 그 기능을 반영하지 않습니다. – prototypical

+0

@protypypical 동의하지만 프로그래머는 간단한 해결책을 원했습니다. 이름보다는 사용자 데이터를 사용하는 것이 더 좋은 옵션입니다. – DogCoffee

0

SKNode .userData 속성을 활용하여 실제 스프라이트에 대한 사용자 지정 노드 데이터를 이동 가능한지 여부 또는 기타 게임 관련 데이터에 저장할 수 있습니다. 여기

상세 정보 : Apple documentation about the userData property

0

나는 SKSpriteNode를 서브 클래 싱하고 이동 할 수 있는지 지정하는 isMoveable BOOL 속성을 추가하는 것이 좋습니다.

다른 답변은 확실히 작동하지만 Xcode 코드 완성 기능을 통해 적절하게 명명되고 액세스 할 수있는 속성의 장점이 부족합니다.

예를 들어 Xcode에서 을 입력하면 isMoveable BOOL 속성을 사용하여 코드 완성을 선택할 수 있습니다.

관련 문제