내 주인공 인 physicsBody가있는 SKSpriteNode는 이동하거나 점프 할 때 흔들립니다.내 캐릭터의 SpriteNode가 움직일 때 떨리는 이유는 무엇입니까?
나는 (가속 또는 감속을 시뮬레이트하기 위해) character.physicsBody.velocity.dx
을 변경하여 캐릭터를 움직이고 있으며, 그를 점프하게하기 위해 applyImpulse
을 사용합니다.
코드 :
가 이동하려면
[self.physicsBody setVelocity:CGVectorMake(self.physicsBody.velocity.dx - 30, self.physicsBody.velocity.dy)];
가 이동하려면 : 또한
if (!isJumping)
{
[self.physicsBody applyImpulse:CGVectorMake(0.0f, 6.0f)];
}
을, 나는에 카메라 위치를 변경하려면 내가 인터넷에서 발견하는 방법을 사용 지도, 문자를 따르도록 :
- (void)setViewpointCenter:(CGPoint)position
{
NSInteger x = MAX(position.x, self.size.width/2);
NSInteger y = MAX(position.y, self.size.height/2);
x = MIN(x, (self.map.mapSize.width * self.map.tileSize.width) - self.size.width/2);
y = MIN(y, (self.map.mapSize.height * self.map.tileSize.height) - self.size.height/2);
CGPoint actualPosition = CGPointMake(x, y);
CGPoint centerOfView = CGPointMake(self.size.width/2, self.size.height/2);
CGPoint viewPoint = CGPointSubtract(centerOfView, actualPosition);
self.map.position = viewPoint;
}
결과?
Here it is (iPhone 5의 QuickTime으로 기록됨). 이 비디오의 문제점과 내 머리 (그리고 지금 막 개발을 시작한 게임)를 어지럽 힐 수 있는지 쉽게 알 수 있습니다.
실제로 유령처럼 (때로는 완벽하지 않고 때로는 완벽하지 않습니다.) 그는 흐려집니다. 나는 아무것도 이해하지 못한다. 나는 해결책을 찾지 못한다.
나는 시뮬레이터와 내 장치에서 같은 효과를 보았습니다.
원하는 경우 더 많은 코드를 게시 할 수 있으며 모든 것을 말할 수 있습니다. 누군가 내가 잘못한 곳을 찾을 수 있기를 바랍니다.
고맙습니다!
폴
편집 1 :
댓글 주셔서 감사합니다!
화면에 145 개의 노드가 표시되고 실제 문제가 나타나지 않습니다.
왼쪽으로 내 캐릭터를 이동하려면, 난 그냥 실행 - :
-(void)moveToRight
{
if (isJumping && !isOnRightSide)
{
[self.physicsBody setVelocity:CGVectorMake(self.physicsBody.velocity.dx/2.0, self.physicsBody.velocity.dy)];
}
[self setIsStopping:NO];
[self setIsOnRightSide:YES];
[self setIsRunning:YES];
[self.physicsBody setVelocity:CGVectorMake(self.physicsBody.velocity.dx + 30, self.physicsBody.velocity.dy)];
}
: 그리고
이(무효)가 {
if (isJumping && isOnRightSide)
{
[self.physicsBody setVelocity:CGVectorMake(-self.physicsBody.velocity.dx/2.0, self.physicsBody.velocity.dy)];
}
[self setIsOnRightSide:NO];
[self setIsStopping:NO];
[self setIsRunning:YES];
[self.physicsBody setVelocity:CGVectorMake(self.physicsBody.velocity.dx - 30, self.physicsBody.velocity.dy)];
}
을 moveToLeft 그리고 오른쪽으로
if (_isStopping)
{
if (isOnRightSide)
{
int ralentissement = MIN(self.physicsBody.velocity.dx, 10);
[self.physicsBody setVelocity:CGVectorMake(self.physicsBody.velocity.dx - ralentissement, self.physicsBody.velocity.dy)];
}
else
{
int ralentissement = MAX(self.physicsBody.velocity.dx, -10);
[self.physicsBody setVelocity:CGVectorMake(self.physicsBody.velocity.dx - ralentissement, self.physicsBody.velocity.dy)];
}
if (abs(self.physicsBody.velocity.dx) < 1)
{
isRunning = NO;
_isStopping = NO;
if (self.hasActions)
[self removeAllActions];
[self.physicsBody setVelocity:CGVectorMake(0, self.physicsBody.velocity.dy)];
}
}
if (isOnRightSide && isRunning && self.physicsBody.velocity.dx < 150 && !_isStopping)
{
[self.physicsBody setVelocity:CGVectorMake(self.physicsBody.velocity.dx + 10, self.physicsBody.velocity.dy)];
}
else if (!isOnRightSide && isRunning && self.physicsBody.velocity.dx > -150 && !_isStopping)
{
[self.physicsBody setVelocity:CGVectorMake(self.physicsBody.velocity.dx - 10, self.physicsBody.velocity.dy)];
}
if (abs(self.physicsBody.velocity.dx) > 150)
{
if (isOnRightSide)
[self.physicsBody setVelocity:CGVectorMake(150, self.physicsBody.velocity.dy)];
else
[self.physicsBody setVelocity:CGVectorMake(-150, self.physicsBody.velocity.dy)];
}
가속과 감속을 지속적으로 적용하는 더 좋은 해결책이 있습니까?
내 이미지를 모두 확인했지만 모두 크기가 같습니다.
카메라 기능을 끄고 실제로 이 흔들 렸습니다!이 함수는 잘못된 부분이어야하므로 raywenderlich에서이 함수를 찾았습니다. 어떻게 대체 할 수 있는지 알지 못합니다. 어떻게 아십니까? 감사!
편집 2 :
그래서, 나는 didFinishUpdate에 내 카메라 이동 방법의 호출을 이동했는데, 을이를 정말 잘 작동! 이 떨리는 느낌은 사라졌으며 이제는 그 나쁜 경험 없이도 놀 수 있습니다. 그가 갈 때, 그는 여전히 아래로 가끔가는 것처럼 보인다 1 픽셀 여기 나이 : (applyForce
방법 덕분에 이루어집니다) 문자 점프 할 때
하지만 일이 한 가지가 남아 있습니다. 그것은 매우 특별하며 Sprite Kit의 실제 이슈인지 또는 너무 크거나 다른 텍스처인지 여부를 알지 못합니다. 나는 물리학자가 그려진 애니메이션을 보려고 노력했다. 그리고 사실 몇 가지 수직적 인 흔들림이 있었다. (더 정확히 말해, 파란색으로 채색 된 사각형은 깜박 거리는 것처럼 보인다.)
지난 호에 대한 아이디어가 있습니까?
수평 이동이 이제 완벽합니다. 도움을 주셔서 감사합니다.
는 내 마음에 와서 제일 먼저 뭔가 애니메이션 잘못된 것입니다. 캐릭터 애니메이션 이미지 크기를 확인하십시오. 아마 이것은 문제가 아니지만 확인할 수 있습니다. 또한 코드에서 캐릭터를 좌우로 움직이는 방법을 보여줄 수도 있습니다. – Whirlwind
또한 showsPhysics를보기 컨트롤러 및 showsNode 및 showsDrawCount에서 사용할 수 있습니다. 디버깅 할 때 유용합니다. – Whirlwind
멋진 아트! 문제가 무엇인지 알 수있을 것 같습니다. 그 카메라 기능을 끄고 뛰어 넘을 수 있습니까? 그것은 여전히 더듬 거리는가? – hamobi