2

자유 낙하 스프라이트 노드를 수평으로 움직이는 다른 스프라이트 몸체에 앉히는 방법. .자유 낙하 스프라이트 노드를 수평으로 움직이는 다른 스프라이트 몸체에 앉히는 방법.

이제 두 본체가 충돌합니다. 그러나 수평 이동체는 그 경로로부터 벗어나 자유 낙하 몸체는 수평 몸체를 때린 후 내려 간다. 이 스프라이트 노드의 설정 변경을 어떻게 해결할 수 있습니까?

나는 충돌이 일어나기 위해 주어진 충돌 및 카테고리 비트 마스크를 만들었습니다.


자유 낙하 체 속성 :

  • affectedbygravity = YES 동적 = YES allowsrotation = NO usesprecisecollisiondetection = YES 반발 = 1 마찰 = 1.0 angulardamping = 0.0 lineardamping = 0.0

수평 이동체 속성

동적 = YES affectedbyGravity = NO 마찰 = 1.0

발진 동작이 본체에 대해 수행된다.

+0

질량을 조정 해 보셨습니까? 떨어지는 몸을 더 가볍게 만들고 움직이는 몸을 무겁게 만드십시오. 'fallingNode.physicsBody? .mass' – rakeshbs

+0

나는 시도했다. 그러나 결과는 좋지 않았다. 나는 그 질량을 확인하기 위해 다른 조합을 시도했다. –

+0

0.7과 500과 같이 질량이 매우 다르더라도 수평 몸체가 빗나가고있다. . –

답변

1

질량을 조정하면 움직이는 물체를 굴절시키지 않아도됩니다. 예를 들어,이 코드를 시도해보십시오.

SKSpriteNode *fallNode = [[SKSpriteNode alloc] initWithColor:[UIColor redColor] size:CGSizeMake(25, 25)]; 
fallNode.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:fallNode.size]; 
fallNode.position = CGPointMake(100, 400); 
fallNode.physicsBody.mass = 1; 
fallNode.physicsBody.allowsRotation = NO; 
fallNode.physicsBody.restitution = 0.0; 
fallNode.physicsBody.friction = 1.0; 
[self addChild : fallNode]; 

SKSpriteNode *moveNode = [[SKSpriteNode alloc] initWithColor:[UIColor greenColor] size:CGSizeMake(25, 25)]; 

moveNode.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:moveNode.size]; 
moveNode.position = CGPointMake(50, 100); 
moveNode.physicsBody.mass = 100000; 
moveNode.physicsBody.affectedByGravity = false; 
moveNode.physicsBody.friction = 1.0; 
moveNode.physicsBody.velocity = CGVectorMake(90, 0); 

[self addChild : moveNode];