gpt4 book ai didi

ios - 如何使用 spritebuilder 创建简单的启动屏幕?

转载 作者:行者123 更新时间:2023-11-29 03:15:09 25 4
gpt4 key购买 nike

在撰写本文时,我正在使用最新版本的 XCode 和 SpriteBuilder。

我有 2 个游戏,其中一个是在 XCode 上纯粹使用 Objective-C 构建的,另一个是在 XCode 上使用 Objective-C 以及 SpriteBuilder 构建的。非 SpriteBuilder 游戏有一个点击播放屏幕,其背景看起来与游戏中的背景相同。点击屏幕的那一刻,您就直接进入游戏。

Sprite Builder 游戏是我尝试在其上实现“开始”屏幕的游戏。我看了一些教程,http://www.reigndesign.com/blog/creating-a-simple-menu-with-scene-transition-in-cocos2d/ ,但这对我没有帮助。我不想使用不同的背景图像从一个屏幕转换到另一个屏幕。

这是我的非 SpriteBuilder 游戏使用的开始屏幕:

-(void)NewGame{
Bottom1.hidden = YES;
Bottom2.hidden = YES;
Bottom3.hidden = YES;
Bottom4.hidden = YES;
Bottom5.hidden = YES;
Bottom6.hidden = YES;
Bottom7.hidden = YES;
Top1.hidden = YES;
Top2.hidden = YES;
Top3.hidden = YES;
Top4.hidden = YES;
Top5.hidden = YES;
Top6.hidden = YES;
Top7.hidden = YES;
Obstacle.hidden = YES;
Obstacle2.hidden = YES;

Intro1.hidden = NO;
Intro2.hidden = NO;
Intro3.hidden = NO;

Heli.hidden = NO;
Heli.center = CGPointMake(31, 74);
Heli.image = [UIImage imageNamed:@"HeliUp.png"];

Start = YES;
ScoreNumber = 0;
Score.text = [NSString stringWithFormat:@"Score: 0"];
Intro3.text = [NSString stringWithFormat:@"High Score: %i", HighScore];

除背景和介绍标签外,所有障碍物均被隐藏。您还可以看到您的高分和点击播放按钮。

当您点击屏幕时,这是下一个代码:

 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

if (Start == YES) {

Intro1.hidden = YES;
Intro2.hidden = YES;
Intro3.hidden = YES;

timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(HeliMove) userInfo:nil repeats:YES];



Scorer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(Scoring) userInfo:nil repeats:YES];

Start = NO;

Bottom1.hidden = NO;
Bottom2.hidden = NO;
Bottom3.hidden = NO;
Bottom4.hidden = NO;
Bottom5.hidden = NO;
Bottom6.hidden = NO;
Bottom7.hidden = NO;
Top1.hidden = NO;
Top2.hidden = NO;
Top3.hidden = NO;
Top4.hidden = NO;
Top5.hidden = NO;
Top6.hidden = NO;
Top7.hidden = NO;
Obstacle.hidden = NO;
Obstacle2.hidden = NO;


RandomPosition = arc4random() %75;
RandomPosition = RandomPosition + 110;
Obstacle.center = CGPointMake(570,RandomPosition);

RandomPosition = arc4random() %75;
RandomPosition = RandomPosition + 110;
Obstacle2.center = CGPointMake(855,RandomPosition);

RandomPosition = arc4random() %55;
Top1.center = CGPointMake(560, RandomPosition);
RandomPosition = RandomPosition +265;
Bottom1.center = CGPointMake(560, RandomPosition);

RandomPosition = arc4random() %55;
Top2.center = CGPointMake(640, RandomPosition);
RandomPosition = RandomPosition +265;
Bottom2.center = CGPointMake(640, RandomPosition);

RandomPosition = arc4random() %55;
Top3.center = CGPointMake(720, RandomPosition);
RandomPosition = RandomPosition +265;
Bottom3.center = CGPointMake(720, RandomPosition);

RandomPosition = arc4random() %55;
Top4.center = CGPointMake(800, RandomPosition);
RandomPosition = RandomPosition +265;
Bottom4.center = CGPointMake(800, RandomPosition);

RandomPosition = arc4random() %55;
Top5.center = CGPointMake(880, RandomPosition);
RandomPosition = RandomPosition +265;
Bottom5.center = CGPointMake(880, RandomPosition);

RandomPosition = arc4random() %55;
Top6.center = CGPointMake(960, RandomPosition);
RandomPosition = RandomPosition +265;
Bottom6.center = CGPointMake(960, RandomPosition);

RandomPosition = arc4random() %55;
Top7.center = CGPointMake(1040, RandomPosition);
RandomPosition = RandomPosition +265;
Bottom7.center = CGPointMake(1040, RandomPosition);


}

Y = -7;
Heli.image = [UIImage imageNamed:@"HeliUp.png"];

}

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{

Y = 7;
Heli.image = [UIImage imageNamed:@"HeliDown.png"];


}

从根本上说,所有障碍物都已加载并在随机位置生成,对象会随着您点击屏幕而移动,如果您不点击屏幕则掉落。介绍标签是隐藏的。

这是我的 SpriteBuilder 游戏的代码:

- (void)didLoadFromCCB {
self.userInteractionEnabled = TRUE;
_grounds = @[_ground1, _ground2];
for (CCNode *ground in _grounds) {
// set collision txpe
ground.physicsBody.collisionType = @"level";
ground.zOrder = DrawingOrderGround;
_scrollSpeed = 80.f;
}
// set this class as delegate
_physicsNode.collisionDelegate = self;
// set collision txpe
_hero.physicsBody.collisionType = @"hero";
_hero.zOrder = DrawingOrdeHero;
_obstacles = [NSMutableArray array];
[self spawnNewObstacle];
[self spawnNewObstacle];
[self spawnNewObstacle];
}
- (void)touchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
if (!_gameOver) {
[_hero.physicsBody applyImpulse:ccp(0, 400.f)];
[_hero.physicsBody applyAngularImpulse:10000.f];
_sinceTouch = 0.f;
}
}

代码非常短。基本上, Logo 屏幕消失后,游戏会立即开始,而不会出现启动屏幕。游戏结束后,它会重新开始,您会立即重新开始玩。

试图弄清楚如何向 SpriteBuilder 游戏添加另一个 void 语句,以便用户从点击屏幕开始玩游戏,而不是立即开始玩游戏。

我可以将viewDidLoad语句添加到SpriteBuilder游戏中,但我想知道它是否会与didLoadfromCCB语句冲突。我需要使用相同的背景将开始屏幕转换到游戏屏幕。唯一不同的是,开始屏幕会隐藏障碍物并显示开始游戏标签,然后标签会隐藏,障碍物会在游戏屏幕上显示。

最佳答案

我建议按照 spritebuilder 教程进行操作。这可能需要您重新调整代码。以下教程还可以帮助您将 spritebuilder 链接到后端代码,以及如何在场景之间进行转换。

我不是 100% 确定为什么您在问题中包含了这么多细节,我对什么是游戏逻辑以及什么是其他逻辑感到困惑...所以如果我说错了,请告诉我我会更新我的答案。

https://www.makegameswith.us/tutorials/getting-started-with-spritebuilder/menus/

关于ios - 如何使用 spritebuilder 创建简单的启动屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21771816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com