如何在 Sprite-Kit 中正确设置相机
How do you set up a camera in Sprite-Kit properly
好的,所以我想在我的游戏中实现一个相机,在另一个 post 我看到了如何做。 (基本上我想要实现的是,每当我的玩家达到一定高度时,相机就会向上移动)
所以这是
-(void)didSimulatePhysics {
SKSpriteNode *hero = self.player;
int cameraEdge = self.player.size.height * 3;
if(hero && self.isPaused == NO)
{
CGPoint heroPosition = hero.position;
CGPoint worldPosition;
worldPosition.x = 0;
CGFloat yCoordinate = worldPosition.y + heroPosition.y;
if ( yCoordinate < cameraEdge && heroPosition.y > -200){
NSLog(@"Waddap bud");
worldPosition.y = worldPosition.y - yCoordinate + cameraEdge;
self.worldMovedForUpdate = YES;
}else {
worldPosition.y = self.frame.size.height/2;
}
if(yCoordinate > (self.frame.size.height - cameraEdge) && heroPosition.y < 2000)
{
worldPosition.y = worldPosition.y + (self.frame.size.height - yCoordinate) - cameraEdge;
self.worldMovedForUpdate = YES;
}
self.world.position = worldPosition;
}
}
由于我自己没有想到这段代码,所以我不完全理解发生了什么,但它确实有效。只是不是我想要的方式。当玩家达到某个 y 级别时,相机突然开始跟随玩家,并且当玩家跳跃很多时,相机移动和相机移动之间的切换点发生,这会导致非常小的相机移动。我知道这有点令人困惑,但我想不出更好的解释方式。
有人可以尝试详细解释这段代码吗(我可以阅读代码,但我就是不明白),如果有人有解决方案(假设你理解问题;P)请不要犹豫要不要通知我
非常感谢
为了让相机跟随你的玩家添加这些简单的代码行:
int cameraEdge = 100;
if (self.player.position.y > cameraEdge) {
worldPosition.y = cameraEdge - self.player.position.y;
}
self.world.position = worldPosition;
这是做什么的:只要你的玩家的 y 位置高于 100(或你设置的任何值),世界的位置就会开始跟随玩家。我已经测试过了,效果很好。
好的,所以我想在我的游戏中实现一个相机,在另一个 post 我看到了如何做。 (基本上我想要实现的是,每当我的玩家达到一定高度时,相机就会向上移动)
所以这是
-(void)didSimulatePhysics {
SKSpriteNode *hero = self.player;
int cameraEdge = self.player.size.height * 3;
if(hero && self.isPaused == NO)
{
CGPoint heroPosition = hero.position;
CGPoint worldPosition;
worldPosition.x = 0;
CGFloat yCoordinate = worldPosition.y + heroPosition.y;
if ( yCoordinate < cameraEdge && heroPosition.y > -200){
NSLog(@"Waddap bud");
worldPosition.y = worldPosition.y - yCoordinate + cameraEdge;
self.worldMovedForUpdate = YES;
}else {
worldPosition.y = self.frame.size.height/2;
}
if(yCoordinate > (self.frame.size.height - cameraEdge) && heroPosition.y < 2000)
{
worldPosition.y = worldPosition.y + (self.frame.size.height - yCoordinate) - cameraEdge;
self.worldMovedForUpdate = YES;
}
self.world.position = worldPosition;
}
}
由于我自己没有想到这段代码,所以我不完全理解发生了什么,但它确实有效。只是不是我想要的方式。当玩家达到某个 y 级别时,相机突然开始跟随玩家,并且当玩家跳跃很多时,相机移动和相机移动之间的切换点发生,这会导致非常小的相机移动。我知道这有点令人困惑,但我想不出更好的解释方式。
有人可以尝试详细解释这段代码吗(我可以阅读代码,但我就是不明白),如果有人有解决方案(假设你理解问题;P)请不要犹豫要不要通知我
非常感谢
为了让相机跟随你的玩家添加这些简单的代码行:
int cameraEdge = 100;
if (self.player.position.y > cameraEdge) {
worldPosition.y = cameraEdge - self.player.position.y;
}
self.world.position = worldPosition;
这是做什么的:只要你的玩家的 y 位置高于 100(或你设置的任何值),世界的位置就会开始跟随玩家。我已经测试过了,效果很好。