ВопросCGRect пересечение от ребенка к себе
Как достичь пересечения двух спрайтов, когда один ребенок из self
, а другой ребенок из sprite
?
Как их позиции совершенно разные, связанные с сравнениями между собой?
Пример; это побежал перед каждым кадром, чтобы определить, пересекаются ли они
-(void)checkInFOVWithPlayer:(Player *)player andEnemy:(Player *)enemy {
SKNode *node = [player childNodeWithName:player.playersFOVName];
if (CGRectIntersectsRect(node.frame, enemy.frame)) {
// [self playerAimAtEnemy:enemy withPlayer:player];
NSLog(@"inframe");
} else {
NSLog(@" ");
}
}
Однако node
является потомком player
и enemy
является потомком self
. Итак, как вы можете проверить, пересекаются ли они?
Вот где они инициализируются
float radianAngle = ((fovAngle)/180.0 * M_PI);
float fovOpposite = atanf(radianAngle) * fovDistance;
SKShapeNode *fov = [SKShapeNode node];
UIBezierPath *fovPath = [[UIBezierPath alloc] init];
[fovPath moveToPoint:CGPointMake(0, 0)];
[fovPath addLineToPoint:CGPointMake(fovOpposite *-1, fovDistance)];
[fovPath addLineToPoint:CGPointMake(fovOpposite, fovDistance)];
[fovPath addLineToPoint:CGPointMake(0, 0)];
fov.path = fovPath.CGPath;
fov.lineWidth = 1.0;
fov.strokeColor = [UIColor clearColor];
fov.antialiased = NO;
fov.fillColor = [UIColor greenColor];
fov.alpha = 0.2;
fov.name = @"playerFOV";
[_playerImage addChild:fov];
and enemy
NSString *bundle = [[NSBundle mainBundle] pathForResource:@"enemyImage" ofType:@"png"];
UIImage *image = [[UIImage alloc] initWithContentsOfFile:bundle];
SKTexture *texture = [SKTexture textureWithImage:image];
_enemy = [Player spriteNodeWithTexture:texture];
_enemy.position = CGPointMake(100, 100);
_enemy.size = CGSizeMake(20, 20);
_enemy.playerAimAngle = [self returnRandomNumberBetween:0 to:360];
_enemy.anchorPoint = CGPointMake(0.5, 0.5);
_enemy.playerHealth = 100;
_enemy.playerIsDead = false;
[self addChild:_enemy];
Преобразование обоих кадров в общую систему координат, такую как экран. – rmaddy
@rmaddy Как бы я подходил к этому? – Daniel
@rmaddy 'CGPoint positionInScene = [node.scene convertPoint: enemy.position toNode: node.parent];' Попытка играть с этим, все равно не может получить никаких результатов. – Daniel