2014-12-14 3 views
1

나는 무작위 미로 생성기를 사용하여 작은 미로를 구축 한 다음 방대한 레벨로 진행합니다. "C"는 collectables이고 "T"는 타일입니다. "P"는 플레이어 시작 위치입니다. 아래 샘플 타일 맵을 포함 시켰습니다.SKPhysicsBody slowing program

여기서와 같이 작은 6x12 패턴을 사용하면 성능 문제가 발생하지 않습니다. 그것은 예를 들어 20x20 패턴을 가지고있을 때 나타납니다.

각 문자는 타일이고 각 타일의 문자는 SKPhysicsBody입니다. 타일은 정사각형이 아니며 복잡한 다각형이며 타일은 서로 만지지 않습니다.

"C"는 한 번에 하나씩 제거 할 수 있어야하고 "T"는 레벨에 영구적이며 이동하지 않아야합니다. 또한 미로는 한 번에 타일의 6x4 섹션 만 보여 주며 배경을 플레이어를 중심으로 이동합니다.

사용자가 신경 쓰지는 않지만 성능이 크게 향상되는 T와 C의 사각형을 만들려고했지만 타일의 모양이 너무 다릅니다.

전문가가이 문제를 해결하기 위해 소집 할 수있는 성능 트릭이 있습니까?

TTTTTT 
TCTTCT 
TCCCCT 
TTCTCT 
TCCTCT 
TTCCTT 
TTTCTT 
TTCCCT 
TCCTCT 
TCTTCT 
TTCCCT 
TTPTTT 
+0

그건 복잡한 모양을 가진 400 개의 물리학 자들입니다. 꽤 많이 있습니다. 필요한 충돌 동작을 생성하는 최소 수의 정점을 사용하도록 모양을 개선하십시오. 물리학 도형이 매우 대략적으로 정의 된 모양을 갖는 것은 매우 일반적입니다. Stefan이 게시 한 우주선은 실제로 정확한 위치가 얼마나 필요한지에 따라 최대 3 개의 꼭지점, 대개 5 ~ 9 개의 점으로 충분히 잘 작동 할 수 있습니다. 간격을 두어 프레임마다 충돌을 발생시키지 않도록 할 수도 있습니다. – LearnCocos2D

+0

@ LearnCocos2D이 질문을 보길 바랬습니다. 나는 8 점을 사용하고, 아이폰 6에서 충분히 괜찮은 반면, 4 점은 그렇게 뜨겁지 않다. 그들이 뷰의 특정 위치에있는 동안 물리학 바디를로드하는 쉬운 방법이 있다고 생각 했나요? 그들이보기를 벗어나면 제거하십시오.이렇게하면 프로세서가 이미 크롤링 할 수있게됩니까? – Scott

답변

1

타일은 복잡한 다각형

나는 이것이 문제라고 생각

있으며, 사각형이 있습니다. 또한 몸이 동적 인 경우 정적으로 설정하면 성능이 크게 향상됩니다. pooling을 사용해 볼 수도 있습니다. 그리고 시뮬레이터의 성능은 실제 장치보다 훨씬 낮습니다.

+0

응답 해 주셔서 감사합니다. 나는 원하는 수준으로 내 성능을 향상시킬 수 있는지를보기 위해 직사각형을 만들려고했으나 심지어 그것이 필요한 곳이 아닐지라도. – Scott

1

어떤 종류의 충돌 방법을 사용하고 있습니까?

enter image description here

SpriteKit는 SKPhysicsBody의 형상을 정의하는 여러 가지 가능성을 제공한다. 최상의 성능은 직사각형 또는 원을 제공합니다.

myPhysicsBody = SKPhysicsBody(rectangleOfSize: mySprite.size) 

더 복잡한 성능의 삼각형 모양을 정의 할 수도 있습니다.

myPhysicsBody = SKPhysicsBody(texture: mySprite.texture, size: mySprite.size) 

는 또한 성능에 부정적인 영향을 미칠 것 'usesPreciseCollisionDetection을'활성화 :

(자체 모양을 감지하는 모든 비 투명 픽셀을 사용합니다 SpriteKit) 텍스처를 사용하면 최악의 성능을 가지고있다.

+0

세 번째. 나는 나의 질문에주의를 기울였다. 나는 그것들을 직사각형으로 만들려고 노력했지만, 그것은 내 목적을 위해 작동하지 않을 것이다. 'usesPreciseCollisionDetection'이 꺼져 있습니다. – Scott

+0

확인. 그런 다음 bodyWithPolygonFromPath : (CGPathRef) 경로를 사용하여 다각형 모양을 정의하려고합니다. 텍스처가 더 좋아야합니다. – Stefan

+0

iOS 7을 지원할 때부터 사용하고 있습니다. 큰 문제는 모든 장면이 항상 도달 할 수는 없지만 한 번에 너무 많은 물리학자가 존재한다는 것입니다. 물리적 인 몸체를 만들거나 파괴 할 수있는 방법이 있습니까? 그게 나를 크게 도와 줄 수도있어. – Scott