在场景游戏中使用视图控制器

瑞安克

碰撞检测后,我需要为我的应用制作一个结束屏幕。用返回主菜单/游戏的按钮制作最终屏幕的最简单方法是什么。我可以使用ViewController吗?我已经阅读了很多教程,视频以及此处的所有文章:

这是我当前的代码(并非全部都是一些重要的事情):

@implementation MyScene

static const int squirrelHitCategory = 1;
static const int nutHitCategory = 2;

- (instancetype)initWithSize:(CGSize)size {
if (self = [super initWithSize:size]) {
    self.physicsWorld.contactDelegate = self;

    _squirrelSprite = [SKSpriteNode spriteNodeWithImageNamed:@"squirrel"];
    _squirrelSprite.position = _firstPosition;
    _atFirstPosition = YES;

    _squirrelSprite.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:10];
    _squirrelSprite.physicsBody.categoryBitMask = squirrelHitCategory;
    _squirrelSprite.physicsBody.contactTestBitMask = nutHitCategory;
    _squirrelSprite.physicsBody.collisionBitMask =  nutHitCategory;

    _squirrelSprite.physicsBody.affectedByGravity = NO;

    self.physicsWorld.contactDelegate = self;

    [self addChild:_squirrelSprite];

    SKAction *wait = [SKAction waitForDuration:3.0];

        SKSpriteNode *lightnut = [SKSpriteNode spriteNodeWithImageNamed:@"lightnut.png"];

        lightnut.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(200,160)];

        lightnut.physicsBody.categoryBitMask = nutHitCategory;
        lightnut.physicsBody.contactTestBitMask = squirrelHitCategory;
        lightnut.physicsBody.collisionBitMask =  squirrelHitCategory;

        lightnut.physicsBody.affectedByGravity = NO;

        self.physicsWorld.contactDelegate = self;

        [self addChild: lightnut];

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
// Check time since the last touch event
if (touch.timestamp-_lastTouch >= .9) {
    // Allow touch
    NSLog(@"greater than or equal to 3 seconds");

    if (_atFirstPosition)
    {
        SKAction *moveNodeLeft = [SKAction moveByX:-207.8 y:0.0 duration:0.85];
        [_squirrelSprite runAction: moveNodeLeft withKey:@"moveleft"];
    } else {
        SKAction *moveNodeRight = [SKAction moveByX:207.8 y:0.0 duration:0.85];
        [_squirrelSprite runAction: moveNodeRight withKey:@"moveright"];
    }
    _atFirstPosition = !_atFirstPosition;
    _squirrelSprite.xScale *= -1.0;
}
else {
    // Ignore touch
    NSLog(@"Seconds since last touch %g",touch.timestamp-_lastTouch);
}
// Store timestamp
_lastTouch = touch.timestamp;

}

-(void)didBeginContact:(SKPhysicsContact *)contact

{
NSLog(@"contact detected");
SKPhysicsBody *firstBody, *secondBody;

firstBody = contact.bodyA;
secondBody = contact.bodyB;

if(firstBody.categoryBitMask == squirrelHitCategory || secondBody.categoryBitMask == nutHitCategory)
{

}
}

我希望我的终端屏幕很简单,所以最简单的方法就是做到最好。谢谢!

史考特

对于我的游戏,我添加一个UIViewController属性并将其分配给SKScene。

然后,您可以将视图添加为子视图。例子...

SKScene *scene = [SKScene sceneWithSize:self.view.frame.size];
scene.viewController = self;

然后在您的场景中...

[self.viewController addSubview:yourView];

这是我自己的一些游戏实现,可帮助您入门。

在您的情节提要或XIB中,无论您喜欢哪个,都可以添加带有按钮的视图作为视图的属性。就我而言,我有一个scoreLabel,一个menuButton和一个restartButton作为属性,可以将它们全部设置为x.hidden = YES;。如我所愿,通过触发它们在场景中,例如...

self.vc.menuButton.hidden = YES;
self.vc.restartButton.hidden = YES;

在您的GameViewController中(这是UIViewController的子类)...

//header
@interface GameViewController : UIViewController

@property (weak, nonatomic) IBOutlet UILabel *scoreLabel;
@property (weak, nonatomic) IBOutlet UIView *hudView;
@property (weak, nonatomic) IBOutlet UIButton *menuButton;
@property (weak, nonatomic) IBOutlet UIButton *restartButton;

@property (nonatomic) MazeScene *maze;

@end

//class
- (void)viewDidLoad
{
    [super viewDidLoad];

    // Configure the view.
    SKView * skView = (SKView *)self.view;

    // Debug Options
//    skView.showsFPS = YES;
//    skView.showsNodeCount = YES;
//    skView.showsPhysics = YES;

    // Create and configure the maze scene.
    CGSize sceneSize = skView.bounds.size;
    skView.ignoresSiblingOrder = YES;

    MazeScene *maze = [[MazeScene alloc] initWithSize:sceneSize];
    maze.scaleMode = SKSceneScaleModeAspectFill;
    maze.vc = self;
    [skView presentScene:maze];
    _maze = maze;
}

在您的SKScene中...

//header
@interface MazeScene : SKScene <SKPhysicsContactDelegate>

@property (nonatomic, weak) GameViewController *vc;

@end

//class
-(id) initWithSize:(CGSize)size {
    if (self = [super initWithSize:size]) {
        //(GameViewController*) is a static cast of a subclass of UIViewController.
        [self.view addSubview:((GameViewController*)self.vc).hudView];
        // [self restartGame] is a specific method for my game, don't worry about it
        [self restartGame];
    }
    return self;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

重新安装15.10,现在蒸汽控制器无法在游戏中使用

来自分类Dev

在控制器中使用视图变量?

来自分类Dev

在 kubuntu 中使用蓝牙游戏控制器

来自分类Dev

在拆分视图控制器中使用多个详细信息视图控制器

来自分类Dev

当存在 Web 视图控制器时,场景视图冻结

来自分类Dev

灰烬数据:在控制器/视图中使用模型

来自分类Dev

在视图中使用控制器中的数据

来自分类Dev

在视图/控制器中使用模型模型

来自分类Dev

在angularjs的视图,服务,控制器中使用的配置常量

来自分类Dev

灰烬数据:在控制器/视图中使用模型

来自分类Dev

在游戏中的视图中使用Future 2.3.2

来自分类Dev

以编程方式打开视图控制器场景 (Swift 4)

来自分类Dev

为什么我的顶点动画着色器在场景和游戏视图中产生不同的结果?

来自分类Dev

在具有父视图控制器中公开的objc功能的视图控制器中使用选择器

来自分类Dev

在场景和引擎游戏中调用“ ad mob”“非页内广告”吗?

来自分类Dev

何时在游戏中的OpenGL中使用GLSL着色器?

来自分类Dev

SpeedFan在游戏中突然停止能够检测控制器和传感器

来自分类Dev

在游戏中使用演员

来自分类Dev

在游戏中使用Bower

来自分类Dev

在游戏中使用Bower

来自分类Dev

游戏对象出现在场景视图中,但不在游戏视图中

来自分类Dev

如何在项目中间而不是初始视图控制器中使用显示视图控制器

来自分类Dev

如果在视图控制器中使用 UITabbar,如何设置主视图控制器

来自分类Dev

如何在视图(或多视图的子视图)中使用多个angularjs的控制器?

来自分类Dev

Swift:如何为我的游戏处理视图控制器

来自分类Dev

离开视图控制器,退出游戏

来自分类Dev

是否可以在cmd中使用操纵杆/游戏控制器输入?

来自分类Dev

是否可以在cmd中使用操纵杆/游戏控制器输入?

来自分类Dev

在视图控制器/页面视图控制器中使图像视图全屏显示(快速)

Related 相关文章

  1. 1

    重新安装15.10,现在蒸汽控制器无法在游戏中使用

  2. 2

    在控制器中使用视图变量?

  3. 3

    在 kubuntu 中使用蓝牙游戏控制器

  4. 4

    在拆分视图控制器中使用多个详细信息视图控制器

  5. 5

    当存在 Web 视图控制器时,场景视图冻结

  6. 6

    灰烬数据:在控制器/视图中使用模型

  7. 7

    在视图中使用控制器中的数据

  8. 8

    在视图/控制器中使用模型模型

  9. 9

    在angularjs的视图,服务,控制器中使用的配置常量

  10. 10

    灰烬数据:在控制器/视图中使用模型

  11. 11

    在游戏中的视图中使用Future 2.3.2

  12. 12

    以编程方式打开视图控制器场景 (Swift 4)

  13. 13

    为什么我的顶点动画着色器在场景和游戏视图中产生不同的结果?

  14. 14

    在具有父视图控制器中公开的objc功能的视图控制器中使用选择器

  15. 15

    在场景和引擎游戏中调用“ ad mob”“非页内广告”吗?

  16. 16

    何时在游戏中的OpenGL中使用GLSL着色器?

  17. 17

    SpeedFan在游戏中突然停止能够检测控制器和传感器

  18. 18

    在游戏中使用演员

  19. 19

    在游戏中使用Bower

  20. 20

    在游戏中使用Bower

  21. 21

    游戏对象出现在场景视图中,但不在游戏视图中

  22. 22

    如何在项目中间而不是初始视图控制器中使用显示视图控制器

  23. 23

    如果在视图控制器中使用 UITabbar,如何设置主视图控制器

  24. 24

    如何在视图(或多视图的子视图)中使用多个angularjs的控制器?

  25. 25

    Swift:如何为我的游戏处理视图控制器

  26. 26

    离开视图控制器,退出游戏

  27. 27

    是否可以在cmd中使用操纵杆/游戏控制器输入?

  28. 28

    是否可以在cmd中使用操纵杆/游戏控制器输入?

  29. 29

    在视图控制器/页面视图控制器中使图像视图全屏显示(快速)

热门标签

归档