2014-03-02 3 views
0

이전에 cocallFuncN 및 CCCallFuncND를 사용했습니다.cocos2d v3 객체가있는 CCActionCallFunc?

나는 함수를 호출하고 함수를 통해 객체를 보내려고합니다. 나는 작동하지 않는 몇 가지 구현을 시도했다. CCActionCallBlock와 내 최신 시도는 다음과 같습니다

[gun runAction:[CCActionRepeatForever actionWithAction:[CCActionCallBlock actionWithBlock:^ 
{ 
    CGPoint gunPoint = CGPointMake(gun.position.x - gun.contentSize.width/2, gun.position.y); 

    CGPoint shootVector = ccpSub(gunPoint, _playerPos); 
    float gunAngle = -1 * ccpToAngle(shootVector); 
    gun.rotation = CC_RADIANS_TO_DEGREES(gunAngle); 
}]]]; 

그리고 나는 다음과 같은 오류가 발생하고있다 :

-[CCActionCallBlock elapsed]: unrecognized selector sent to instance 0x15f84c50 2014-03-02 16:54:19.768 JuhnerickShooterFinal[22576:70b] * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[CCActionCallBlock elapsed]: unrecognized selector sent to instance 0x15f84c50'

사람이 작업에서 호출 된 함수로 개체를 전달하는 방법에 대한 몇 가지 빛을 흘릴 수 있습니다.

감사합니다 :) 당신이 CCActionCallBlock reference에서 볼 수 있듯이

+0

반복 영원한 동작을 제거하고 모든 프레임마다 코드를 실행해야하는 경우 대상 노드에서 업데이트 선택기를 예약하십시오. 블록 조치를 사용하여 스케줄링을 실행할 수 있습니다. – LearnCocos2D

답변

2

는, 그것은 CCActionInterval 클래스 (및 모든 서브 클래스) 내에있는 elapsed 방법을 포함하지 않는 인스턴트 액션입니다.

뭔가가 간단히 모든 프레임을 발생 노드의 update 방법에 코드를 추가하려면 :

Gun.m :

- (void)update:(ccTime)delay { 
    GPoint gunPoint = CGPointMake(self.position.x - self.contentSize.width/2, self.position.y); 
    CGPoint shootVector = ccpSub(gunPoint, _playerPos); 
    float gunAngle = -1 * ccpToAngle(shootVector); 
    self.rotation = CC_RADIANS_TO_DEGREES(gunAngle); 
} 

참고 : 액세스하는 방법을 알아낼 필요가 _playerPos 위 코드에서. Player은 게임 장면에서 싱글 톤과 같은 패턴을 통해 액세스 할 수 있습니다.

+0

감사합니다. 내 현재의 프로그램을 cocos2d 0.99에서 cocos2d v3으로 업데이트하는 중입니다. – Lagoo87

관련 문제