2011-12-16 4 views
4

simple cocos2d game에 대한 지침서를 작성 중입니다. 그에 그러나탄창/탄환 방향 Cocos2d

내가 그것은 단지 하나의 단면 모든 방향에서 발사하기 위해 할 수있는 사용자 화재가 한 방향에 있는지 총알 튜토리얼?

여기에 방향 코드가 있습니다.

int offX = location.x - projectile.position.x; 
int offY = location.y - projectile.position.y; 

[self addChild:projectile]; 

int realX = winSize.width + (projectile.contentSize.width/2); 
float ratio = (float) offY/(float) offX; 
int realY = (realX *ratio) + projectile.position.y; 
CGPoint realDest = ccp(realX, realY); 

int offRealX = realX - projectile.position.x; 
int offRealY = realY - projectile.position.y; 
float length = sqrtf((offRealX*offRealX)+(offRealY*offRealY)); 
float velocity = 480/1; 
float realMoveDuration = length/velocity; 

[projectile runAction:[Sequence actions:[MoveTo actionWithDuration:realMoveDuration position:realDest], 
         [CallFuncN actionWithTarget:self selector:@selector(spriteMoveFinished:)], nil]]; 

모든 도움을 주시면 대단히 감사하겠습니다. 감사합니다

+0

나는 또한 레이의 블로그에서 cocos2d를 배우고 있습니다. 심지어 내가 대답을 알고 싶습니다 .. :) – Sarah

+0

확인 돌봐 : – NoobMe

답변

4

당신이 캐릭터의 위치에서 발사체를 생성한다고 가정하면 끝점을 계산하기 전에 방향을 알아내는 것만으로 충분합니다.

[self addChild:projectile]; 

스칼라 부동 추가 :

float scalarX = 1.0f; 

을 그리고 터치가 캐릭터의 남아있는 경우가 음수 : 그냥 그런

if (offX < 0.0f) scalar = -1.0f; 

발사체를 추가 한 후 realX에이 스칼라를 곱하면 올바른 방법을 가리킬 수 있습니다.

int realX = scalar * (winSize.width + (projectile.contentSize.width/2)); 
+0

난 +100 수 있었으면 좋겠어 .. 정말 고마워 .. :) – Sarah

+0

@ davbryn - 정말 고마워! – NoobMe

+0

당신도이 링크에 대답 할 수 있습니까? 나는 괴물과 같은 문제가 있었다 : [link] http://stackoverflow.com/questions/8797777/firing-bullets-monster-position-in-cocos2dsprites thanks – NoobMe