2

장면 내에서 전류를 시뮬레이션하는 쉬운 방법이 있습니까? 나는 그들이 스프라이트 킷 내에서 중력, 질량, 밀도, 드래그 및 다른 속성을 제공하지만, 내가 보지 못하는 것은 현재 장면에 영향을 미치는 현재의 오브젝트를 어떻게 시뮬레이션 할 것인가라는 것입니다.Spritekit 유체 흐름 시뮬레이션

IE는 I 그것이, watter 통해 떨어지는 비교적 정직되어야이 설정 한 것처럼 물체가 아래로 화면의 상부로부터, 비중 밀도를 이용하여 적하가 말한다. 그러나, 장면의 중앙에서 왼쪽에서 오른쪽으로 흐르는 전류를 추가하고 싶다고 말하자 ... 물체가 떨어지면 현재의 영향을 받기 시작하고 가을은 현재와 함께 움직이기 시작하고, 전류의 중심에 가깝게되면 좌/우 이동이 증가하고 전류의 중심을 통과하여 중심에서 멀어지면서 좌/우 이동이 느려집니다.

이것이 가능합니까? 이것을 시뮬레이션하기 위해 중력에 따라 왼쪽에서 오른쪽으로 움직이는 invisibe/transparent 노드를 생성해야합니까? 아니면 사용해야하는 다른 접근법이 있습니까?

+0

여기에 대한 답변을보십시오. http://stackoverflow.com/a/22014737/2043580 – ZeMoon

답변

6

귀하의 -update 방법으로 처리 할 수 ​​있습니다. 특정 노드가 특정 지역 내에 있는지 여부를 확인하고 현재 노드의 영향을받는 것처럼 강제로 적용 할 수 있습니다.

편집 : 현재의 중심을 기준으로 힘을 구분할 수있는 방법을 게시했습니다.

-(void)update:(CFTimeInterval)currentTime 
{ 

     for (SKNode *node in self.children) 
     { 
      if (node.position.y > 300 && node.position.y < 500) //Let's say the current is between these values, modify to your situation. 
      { 
       float diff = ABS (node.position.y - 400);//Difference from center of current. 
       CGVector force = CGVectorMake(2*(100 - diff), 0);//Variable force 
       [node.physicsBody applyForce:force]; 
      } 
     } 
} 
+0

훌륭한 개념입니다. 동일한 코드를 사용하고 다른 강제 변수를 적용하여 강에서 전류를 시뮬레이션 할 수 있습니다. 가장자리가 약하고 가운데가 더 강합니다. 사물을 더 재미있게 만들려면 대각선 벡터 힘이있는 4 개의 사각형을 사용하여 월풀을 추가하십시오. – sangony