在cocos2d之前,我曾使用过CCCallFuncN和CCCallFuncND
我试图调用一个函数并将对象发送到函数。我尝试了一些似乎不起作用的实现。我对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]:无法识别的选择器发送到实例0x15f84c50 2014-03-02 16:54:19.768 JuhnerickShooterFinal [22576:70b] * 由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' - [CCActionCallBlock elapsed]:无法识别的选择器发送到实例0x15f84c50'
有人可以了解如何将对象从Action中传递给Called函数。
谢谢:)
答案 0 :(得分:2)
正如您从CCActionCallBlock reference所看到的,它是一个即时操作,它不包含elapsed
类中的CCActionInterval
方法(和所有子类)。
如果您希望每帧都能发生某些事情,那么只需将代码添加到节点的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
。