Alf*_*fro 2 objective-c ios sprite-kit
我SKSpriteNode为物理体大小为0.0的相机创建了一个,以避免不必要的碰撞和世界节点:
-(void)createSceneContents {
SKNode *world = [SKNode node];
world.name = @"world";
self.anchorPoint = CGPointMake(0.1, 0);
SKSpriteNode *camera = [SKSpriteNode spriteNodeWithColor:[UIColor redColor] size:CGSizeMake(300, 300)];
camera.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(0, 0)];
camera.physicsBody.affectedByGravity = NO;
camera.physicsBody.usesPreciseCollisionDetection = NO;
camera.physicsBody.categoryBitMask = noColisions;
camera.alpha = 0.5;
camera.zPosition = 1;
camera.name = @"cam";
[self addChild:world];
[world addChild:camera];
Run Code Online (Sandbox Code Playgroud)
我已经尝试了一个小教程在spriteKit平台游戏中添加相机,但我甚至无法移动视图,我不知道如何访问移动视图的属性.谁知道我做错了什么?这是我的代码:
-(void)didSimulatePhysics
{
//I've tried with @"cam" and @"hero"
[self centerOnNode: [self childNodeWithName:@"world"]];
}
-(void)centerOnNode:(SKNode *) camera {
CGPoint cameraPositionInScene = [camera.scene convertPoint:camera.position fromNode:camera.parent];
[self.parent setPosition:CGPointMake(
camera.parent.position.x - cameraPositionInScene.x,
camera.parent.position.y - cameraPositionInScene.y
)];
}
Run Code Online (Sandbox Code Playgroud)
在Apple的文档中,您遵循的相机节点不是SKSprite,它是一个SKNode.我认为这将解决您的问题.
要回答标题中的问题,您实际上要做的是将世界节点附加到场景中.在此节点内,放置了所有精灵.作为世界节点的子节点,您可以为摄像机添加另一个节点.
这为您提供了三种不同的坐标系.想象一下,三张纸,最底部是你的世界,即包含所有精灵的图层.最重要的是一张代表相机的小纸片.最重要的是,你有一个透明的盒子,代表你的观察区域.
它的设置方式是无法移动最顶部的透明视图层.相反,你正在做的是移动位于世界图层顶部的点,然后将世界图层滑动到该点.
现在想象一下,在纸张场景中,这是一个2D滚动世界,你只能左右移动.现在拿相机点并将其一直放在观看区域的最右侧.现在,取世界图层并将其拖动到左侧,直到相机位于不可移动的查看区域的中心.这或多或少,发生了什么.
| 归档时间: |
|
| 查看次数: |
7377 次 |
| 最近记录: |