좋아요, 우주 발파공 게임 코드를 작성하고 있습니다.이 모든 중요한 문제를 제외한 모든 것이 잘 진행되고있는 것처럼 보입니다.SpriteKit Physics Bodies 여러 레이어의 충돌
먼저 자기 (GameScene)의 자식으로 우주선 (PhysicsBody 포함)을 추가했습니다.
다음으로 노드의 배경 레이어를 자기 자신, 우주선 뒤에 그리고 조이스틱 컨트롤을 통해 우주선 뒤의 배경을 움직여 시뮬레이션 한 노드도 추가했습니다.
boundary physics Edge Loop body가있는 노드를 추가하여 배가 배 이상으로 이동하지 못하도록하고 해당 노드를 bgLayer의 자식으로 추가했습니다.
나는 우주선을 쏠 수있는 물건을 가지고있다. 그러나 나는 배경을 따라 움직이기를 바란다. 그래서 나는 그들을 bgLayer의 자식으로 추가했다.
우주선이 터지면 나는 레이저가 필요했기 때문에 bgLayer의 자식뿐만 아니라 이것을 추가했습니다.
_spaceship.physicsBody = (custom physicsBody code);
[self addChild:_spaceship];
_bgLayer = [SKNode node];
[self addChild:_bgLayer];
_bounds = [SKNode node];
_bounds.physicsBody = (physicsBody edgeLoop code);
[_bgLayer addChild:_bounds];
_otherObjects.physicsBody = (custom physicsBody code);
[_bgLayer addChild:_otherObjects];
_laser.physicsBody = (custom physicsBody code);
[_bgLayer addChild:_laser];
모두 잘
는 우주선을 넘어 이동하지 않는 배경, 다른 객체는 배경의 움직임에 따라 이동하고, 레이저 화재는에 전화했을 때.내 첫 번째 커다란 딜레마는 내 레이저가 발사 될 때, 배경이 움직일 때 움직이지 않지만 배경은 뒤로 움직입니다. 나는 아마 할 수 있었지만 레이저가 항상 우주선과 평행하게 움직인다면 우스운 것처럼 보입니다. _bgLayer의 자식으로 레이저를 추가 한 이후로 이상하게 보입니다.
둘째로, 내 레이저의 물리학 바디는 EdgeLoop 본체를 인식하지 못하는 것 같아요. 또한, 우주선의 physicsBody가 EdgeLoop 본문을 인식하는 것처럼 보이지만 _bgLayer의 하위 개체를 인식하지 못합니다.
동일한 레이어의 하위가 아닌 물리 단체가 서로를 인식합니까? 내 레이저가 왜 같은 층의 다른 아이들과 비슷하게 행동하지 않습니까?
물리 엔진에 레이어가 없습니다. 장면마다 하나의 물리 세계가 있습니다. 충돌 범주와 그 종류의 것을 설정하고 개체가 물리에 참여하는 경우와 정의하는 방법을 모두 설정해야합니다. – uchuugaka
코딩 예에서이 내용을 추가하지 않은 것에 대해 사과드립니다.하지만 범주 및 콜리 전 비트 마스크를 설정했지만 레이저가 이러한 설정을 무시하는 것 같습니다. – wtivie05