을 작동하지, 아무것도 내가 잘못 가고 디버거CGRectIntersectsRect이 코드를 실행하고 총알이 선을 통과 한 후 제대로
//This is for the button that shoots the bullet
- (IBAction)shooterButton:(id)sender {
[self mover:(id)sender];
[self viewDidCollidee];
}
-(BOOL)viewsDoCollide {
CGRect bulletFrame = _bullet.frame;
CGRect lineFrame = _line.frame;
if(CGRectIntersectsRect(bulletFrame, lineFrame))
{
return YES;
}
return NO;
}
-(void)viewDidCollidee {
bool collisionDetector = [self viewsDoCollide];
if (collisionDetector == YES) {
NSLog(@"Collided!");
}
}
- (void)mover:(id)sender {
CGRect bulletFrame = _bullet.frame;
CGRect lineFrame = _line.frame;
[UIView animateWithDuration:0.2 animations:^{
CGRect newFrame = CGRectMake(bulletFrame.origin.x + lineFrame.origin.x + 15, bulletFrame.origin.y, bulletFrame.size.width, bulletFrame.size.height);
_bullet.frame= newFrame;
}];
}
에 표시되지 않습니다? 나는 충돌에 대해 이미 많은 질문에 답했다. 나는 그것을 볼 수 없다. 충돌을 감지하는 다른 방법이 있습니까? 그렇지 않다면 어디서 잘못 될까요?
편집 : 나는 KirkSpaziani의 제안을했다하지만 변경 :
CGRect newFrame = CGRectMake(bulletFrame.origin.x + lineFrame.origin.x + 15, bulletFrame.origin.y, bulletFrame.size.width, bulletFrame.size.height);
에 :
CGRect newFrame = CGRectMake(bulletFrame.origin.x + lineFrame.origin.x - 14, bulletFrame.origin.y, bulletFrame.size.width, bulletFrame.size.height);
주, 그것은는 -14 대신 15의. 그러나 이렇게하면 이미지가 아직 충돌하지 않아도 충돌이 감지됩니다. 충돌이 실제로 발생할 때 충돌을 감지하는 방법. 당신이 이벤트
- (IBAction)shooterButton:(id)sender {
[self mover:(id)sender];
[self viewDidCollidee];
}
당신은 아마 viewDidCollidee (원문) 모든 프레임을 호출 할을 발사 할 때 충돌 경우에만 확인하는 것처럼
'bulletFrame'과'lineFrame'에는 어떤 값이 있습니까? 디버거를 사용하십시오! –
@KurtRevis 당신은 무엇을 의미합니까? 글 머리 기호와 선은 모두 UIImageVIew 속성이며 약하고 비 자연적인 속성입니다. –