Im 객관적인 -c와 sprite kit에 상당히 새로운 것이지만 나는 잠시 동안 게임 개발을 해왔다. 현재 2 차원 게임을하고있는 Im은 적의 함선을 화면의 오른쪽에서 왼쪽으로 움직이게합니다. 필자의 게임의 여러 부분에 대한 자습서를 읽고 필 요한 곳에서 추가했습니다. 나는 게임 적들이 베 지어 경로를 따르고 게임에서 이것을 구현할 수있는 튜토리얼을 발견했다. 그러나 베 지어 곡선을 처음 접했을 때 나는 그것을 완전히 이해하지 못했고 알고리즘은 내 스프라이트를 위에서 아래로 이동시킨다. 하지만 나는 그들에게 왼쪽에서 오른쪽으로 갈 필요가있다.Sprite가 bezier curve를 따르는 방법
필자는 스프라이트에 베 지어 곡선을 추가하는 데 사용한 코드 단편을 포함시켜 위에서 아래로가 아니라 오른쪽에서 왼쪽으로 이동할 수있는 방법에 대한 제안을했습니다.
CGMutablePathRef cgpath = CGPathCreateMutable();
float xStart = [self getRandomNumberBetween:0+asteroid.size.width to:self.frame.size.width-asteroid.size.width];
float xEnd = [self getRandomNumberBetween:0+asteroid.size.width to:self.frame.size.width-asteroid.size.width];
float cp1X =[self getRandomNumberBetween:0+asteroid.size.width to:self.frame.size.width-asteroid.size.width];
float cp1y = [self getRandomNumberBetween:0+asteroid.size.width to:self.frame.size.width-asteroid.size.height];
float cp2x = [self getRandomNumberBetween:0+asteroid.size.width to:self.frame.size.width-asteroid.size.width];
float cp2Y = [self getRandomNumberBetween:0 to:cp1y];
CGPoint s = CGPointMake(xStart, 1024.0);
CGPoint e = CGPointMake(xEnd, -100);
CGPoint cp1 = CGPointMake(cp1X, cp1y);
CGPoint cp2 = CGPointMake(cp2x, cp2Y);
CGPathMoveToPoint(cgpath, NULL, s.x, s.y);
CGPathAddCurveToPoint(cgpath, NULL, cp1.x, cp1.y, cp2.x, cp2.y, e.x, e.y);
SKAction *enemyCurve = [SKAction followPath:cgpath asOffset:NO orientToPath:YES duration:5];
CGPoint location = CGPointMake(-self.frame.size.width-asteroid.size.width, randY);
SKAction *moveAction = [SKAction moveTo:location duration:randDuration];
SKAction *doneAction = [SKAction runBlock:(dispatch_block_t)^(){
asteroid.hidden = YES;
}];
SKAction *moveAsteroidActionWithDone = [SKAction sequence:@[enemyCurve,moveAction, doneAction]];
도움을 주셔서 감사합니다.
이것은 내가 찾고 있던 것이었고, 이것을 게임에 구현하는 데 도움이 된 좋은 설명에 감사드립니다. –
어쨌든 스프라이트가 움직이는 방향을 향하게하는 방법을 알고 있습니까?'orientToPath : YES'를 설정합니다. 그러나 커브의 마지막 점에 직면합니다. 어떻게하면 점을 가리킬 수 있는지에 대한 제안 사항이 있습니다. 여행 방향? 다시 감사합니다 –