IOS 2D游戏开发框架 SpriteKit--续(创建敌对精灵)
生活随笔
收集整理的這篇文章主要介紹了
IOS 2D游戏开发框架 SpriteKit--续(创建敌对精灵)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? 這次包括之后講的spritekit 我都會圍繞一個案例來說,這個案例就是一個簡單的2d飛機大戰游戲,今天這里我講創建敵對精靈,就是敵對飛機,敵對飛機不停的被刷新到屏幕上.....當然這里涉及到的類其實還是,精靈,和材質兩個類,這兩個類前兩篇的案例中已經出現過,使用方法都一樣,主要看邏輯,我這里主要是實現每間隔一段時間屏幕就刷新一個敵對飛機。飛機從屏幕高度為起點往下移動,當potion移動到0時將敵對飛機移出。
1 /*這個方法是spritekit 的場景自帶的,每過一秒就會被調用*/ 2 -(void)update:(CFTimeInterval)currentTime { 3 [self BackMove:1]; 4 5 [self initEnemySprite];//本次增加的創建敵對飛機的方法 6 7 8 } 9 /*創建敵對飛機*/ 10 -(void)initEnemySprite 11 { 12 /*此方法是放在update里面的所以是每秒執行一次,下面三個變量就是控制飛機刷新速度的,如果不控制,屏幕就會每秒都刷新一個飛機出來,那么不一會屏幕就會爆滿, 這里每35秒刷新一架小型地址每400秒刷新一架中型飛機, 每700秒刷行一架大飛機*/ 13 _smallPlaneTime++; 14 _mediumPlaneTime++; 15 _bigPlaneTime++; 16 17 18 //int RadomNumber= (arc4random() % 100) + 0; 19 int SpriteX=DEVICE_Width; 20 /*隨機精靈在x軸的位置*/ 21 int x = (arc4random() % (SpriteX-90)) + 45; 22 23 int speed = 0; 24 25 26 if (_smallPlaneTime>35) { 27 UIImage *farTextureImageThree=[UIImage imageNamed:@"MemberTwo"]; 28 SKTexture *farTextureThree = [SKTexture textureWithImage:farTextureImageThree]; 29 30 31 SKSpriteNode *foePlane = [SKSpriteNode spriteNodeWithTexture: farTextureThree size:CGSizeMake(farTextureThree.size.width/2.5, farTextureThree.size.height/2.5)]; 32 //增加敵對飛機受動力感應的范圍 33 foePlane.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:foePlane.size]; 34 /*飛機向下移動速度*/ 35 speed= (arc4random() % 5) + 2; 36 37 foePlane.position = CGPointMake(x, self.size.height); 38 foePlane.zPosition=1; 39 /*下面三個屬性是設置敵對飛機的重力檢測屬性,之后它們都會用到,比如之后用戶操作的飛機發射子彈打在它們上面,下面這屬性就起作用了*/ 40 foePlane.physicsBody.categoryBitMask = SKRoleCategoryFoePlane; 41 foePlane.physicsBody.collisionBitMask = SKRoleCategoryBullet; 42 foePlane.physicsBody.contactTestBitMask = SKRoleCategoryBullet; 43 [self addChild:foePlane]; 44 /*當精靈的y坐標為0時將精靈從父節點移出*/ 45 [foePlane runAction:[SKAction sequence:@[[SKAction moveToY:0 duration:speed],[SKAction removeFromParent]]] completion:^{ 46 [foePlane removeFromParent]; 47 }]; 48 _smallPlaneTime=0; 49 50 } 51 52 if (_mediumPlaneTime>400) { 53 54 55 56 UIImage *farTextureImageThree=[UIImage imageNamed:@"Teamer"]; 57 SKTexture *farTextureThree = [SKTexture textureWithImage:farTextureImageThree]; 58 SKSpriteNode *foePlane = [SKSpriteNode spriteNodeWithTexture: farTextureThree size:CGSizeMake(farTextureThree.size.width/2.5, farTextureThree.size.height/2.5)]; 59 //增加敵對飛機受動力感應的范圍 60 foePlane.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:foePlane.size]; 61 /*飛機向下移動速度*/ 62 speed = (arc4random() % 2) + 2; 63 64 foePlane.position = CGPointMake(x, self.size.height); 65 66 foePlane.zPosition=1; 67 /*下面三個屬性是設置敵對飛機的重力檢測屬性,之后它們都會用到,比如之后用戶操作的飛機發射子彈打在它們上面,下面這屬性就起作用了*/ 68 foePlane.physicsBody.categoryBitMask = SKRoleCategoryFoePlane; 69 foePlane.physicsBody.collisionBitMask = SKRoleCategoryBullet; 70 foePlane.physicsBody.contactTestBitMask = SKRoleCategoryBullet; 71 [self addChild:foePlane]; 72 /*當精靈的y坐標為0時將精靈從父節點移出*/ 73 [foePlane runAction:[SKAction sequence:@[[SKAction moveToY:0 duration:speed],[SKAction removeFromParent]]] completion:^{ 74 [foePlane removeFromParent]; 75 }]; 76 _mediumPlaneTime=0; 77 78 } 79 80 81 if (_bigPlaneTime>700) { 82 83 84 85 86 87 88 UIImage *farTextureImageThree=[UIImage imageNamed:@"Unknown"]; 89 SKTexture *farTextureThree = [SKTexture textureWithImage:farTextureImageThree]; 90 91 92 SKSpriteNode *foePlane = [SKSpriteNode spriteNodeWithTexture: farTextureThree size:CGSizeMake(farTextureThree.size.width/2.5, farTextureThree.size.height/2.5)]; 93 94 95 //增加敵對飛機受動力感應的范圍 96 foePlane.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:foePlane.size]; 97 98 /*飛機向下移動速度*/ 99 speed = (arc4random() % 5) + 3; 100 foePlane.position = CGPointMake(x, self.size.height); 101 foePlane.zPosition=1; 102 /*下面三個屬性是設置敵對飛機的重力檢測屬性,之后它們都會用到,比如之后用戶操作的飛機發射子彈打在它們上面,下面這屬性就起作用了*/ 103 foePlane.physicsBody.categoryBitMask = SKRoleCategoryFoePlane; 104 foePlane.physicsBody.collisionBitMask = SKRoleCategoryBullet; 105 foePlane.physicsBody.contactTestBitMask = SKRoleCategoryBullet; 106 [self addChild:foePlane]; 107 /*當精靈的y坐標為0時將精靈從父節點移出*/ 108 [foePlane runAction:[SKAction sequence:@[[SKAction moveToY:5 duration:speed],[SKAction removeFromParent]]] completion:^{ 109 [foePlane removeFromParent]; 110 }]; 111 _bigPlaneTime=0; 112 113 } 114 115 116 117 118 119 }?
其實這里的精靈和材質類我都是封裝了類的,這里為了顯示代碼,所以直接把封裝類的代碼寫一起了。開發時不建議這樣做。
?
下面是下載地址:http://download.csdn.net/detail/qq_35826634/9599204 ?有興趣的朋友可以去下來看看
?
本人創業做的一款androidApp, 下載量已經有2000多萬,各種當前熱門的網絡手機獎勵紅包全部集成,另外還有熱門電影和淘寶高額優惠券!很適合各類型的用戶。
?
轉載于:https://www.cnblogs.com/xiaoliao/p/5754064.html
總結
以上是生活随笔為你收集整理的IOS 2D游戏开发框架 SpriteKit--续(创建敌对精灵)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C# 之 6.0 新特性
- 下一篇: 【EF学习笔记09】----------