2014-06-18 1 views
1

나는 Lular Lander 게임을 만들고 있습니다. 나는 Lander 객체를 가지고 있습니다. 단순함을 위해 그것이 단순한 사각형이라고 상상해 봅시다.Sprite Kit에서 내 물리학 적 몸체에 적용 할 힘 벡터를 계산하는 방법은 무엇입니까?

화면을 탭하면 해당 사각형에 힘을가합니다. 기본값은 CGVectorMake(0,40) 입니다. 그러면 사각형이 천천히 위로 올라갑니다.

가 지금은 가속도계를 기반으로 스프라이트를 회전 할, 그래서처럼 수행

// update method 

CGFloat updatedAccelX = accelerX; 
CGFloat updatedAccelY = -accelerY; 
CGFloat angle = vectorAngle(CGPointMake(updatedAccelX, updatedAccelY)) - 1.61; 
self.lander.zRotation = angle; 

// end of update 

static inline CGFloat vectorAngle(CGPoint v){ 
    return atan2f(v.y, v.x); 
} 

지금 내 회전이 변경된 것을, 나는 새로운 방향으로의 힘의 상대를 적용 할. 예를 들어, 내 Lander 회전이 오른쪽으로 90도 회전하면 충동을 적용하고 싶습니다 (40,0).

피직스 바디에 적용 할 새로운 힘 벡터를 어떻게 계산합니까?

아래에 Box2d 물리학이 있기 때문에 Box2d를 태그로 추가합니다.

답변

2

다음과 같이 당신은 착륙선의 벡터를 계산할 수

float rotation = lander.zRotation; 

회전이 점을 고려 :

rotation += M_PI_2; 

float intensity = 40.0; 

CGVector newVec = CGVectorMake(intensity * cosf(rotation), intensity * sinf(rotation)); 

[lander.physicsBody applyForce:newVec]; 
관련 문제