IOS 2D遊戲開發框架 SpriteKit-->續(完善角色功能)

本人開發的開發者技術變現資源彙集地,你們支持下,下面是網址node

https://www.baiydu.comandroid

 

1、說明
       今天給角色精靈增長了子彈發射功能,增長了子彈與敵對精靈的碰撞檢測,當角色精靈子彈與敵對精靈碰撞後,它們都會從屏幕上消失。數組

2、場景層SKScene的修改網絡

一、 在初始化場景層的方法中增長下面代碼
self.physicsWorld.contactDelegate = self;post

self.physicsWorld.gravity = CGVectorMake(0,0);spa

二、初始化場景層增長場景動力檢測代理代理

 1 - (instancetype)initWithSize:(CGSize)size
 2 {
 3      if (self = [super initWithSize:size]) {
 4         
 5         NearbyArray=[[NSMutableArray alloc]init];
 6           /*第一個場景背景節點*/
 7         UIImage  *farTextureImage=[UIImage imageNamed:@"planeBack"];
 8         SKTexture *farTexture = [SKTexture  textureWithImage:farTextureImage];
 9         
10         SKSpriteNode  *farTextureSpriteOne = [SKSpriteNode spriteNodeWithTexture:farTexture size:self.size];
11         // farTextureSpriteOne.anchorPoint=CGPointMake(DEVICE_Width/2, DEVICE_Height/2);
12         farTextureSpriteOne.zPosition=0;
13          farTextureSpriteOne.position=CGPointMake(self.frame.size.width/2, self.frame.size.height/2 );
14         
15         
16         
17         
18             /*第二個場景背景節點*/
19          UIImage  *farTextureImageTwo=[UIImage imageNamed:@"planeBack"];
20          SKTexture *farTextureTwo = [SKTexture  textureWithImage:farTextureImageTwo];
21             SKSpriteNode  *farTextureSpriteTwo = [SKSpriteNode spriteNodeWithTexture:farTextureTwo size:self.size];
22         //farTextureSpriteTwo.anchorPoint=CGPointMake(0, 0);
23         farTextureSpriteTwo.zPosition=0;
24         farTextureSpriteTwo.position=CGPointMake(farTextureSpriteOne.position.x, -(self.frame.size.height/2-10));
25  
26         
27         
28         /*第三個場景背景節點*/
29          UIImage  *farTextureImageThree=[UIImage imageNamed:@"planeBack"];
30         SKTexture *farTextureThree = [SKTexture  textureWithImage:farTextureImageThree];
31 
32         SKSpriteNode  *farTextureSpriteThree =[SKSpriteNode spriteNodeWithTexture:farTextureThree size:self.size];
33 
34          farTextureSpriteThree.zPosition=0;
35         farTextureSpriteThree.position=CGPointMake(farTextureSpriteOne.position.x, -(self.frame.size.height/2+self.frame.size.height-20));
36         
37         
38         
39         
40         [self addChild:farTextureSpriteOne];
41         [self addChild:farTextureSpriteTwo];
42           [self addChild:farTextureSpriteThree];
43         
44         /*把三個場景背景節點加到一個數組中去,等會滾動以後,纔好快速獲取每一個節點,重置postion*/
45         [NearbyArray addObject:farTextureSpriteOne];
46          [NearbyArray addObject:farTextureSpriteTwo];
47         [NearbyArray addObject:farTextureSpriteThree];
48         
49          
50           
51  
52          FirendPlane= [SKFoePlane createPlayerPlane];
53          FirendPlane.zPosition=1;
54          FirendPlane.position=CGPointMake(self.frame.size.width/2, 50 );
55          [self addChild:FirendPlane];
56          /*增長兩個精靈產生動力以後的代理*/
57          self.physicsWorld.contactDelegate = self;
58          self.physicsWorld.gravity = CGVectorMake(0,0);
59     }
60     return self;
61 
62 }

3、初始化角色精靈的子彈code

 1 -(void)PlayerBulletFire
 2 {
 3     
 4      bulletTime++;
 5    if (bulletTime==10) {
 6         UIImage  *RolePlaneImage=[UIImage imageNamed:@"加號"];
 7         
 8         SKTexture *RolePlaneImageTextture = [SKTexture  textureWithImage:RolePlaneImage];
 9         FirendPlane.PlayerBulletSprite=[SKSpriteNode spriteNodeWithTexture:RolePlaneImageTextture size:CGSizeMake(DEVICE_Width*0.06, DEVICE_Width*0.06)];
10         FirendPlane.PlayerBulletSprite.zPosition=1;
11         FirendPlane.PlayerBulletSprite.position=CGPointMake(FirendPlane.position.x, FirendPlane.position.y+10 );
12         [self addChild:FirendPlane.PlayerBulletSprite];
13           FirendPlane.PlayerBulletSprite.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:FirendPlane.PlayerBulletSprite.size];
14        
15         FirendPlane.PlayerBulletSprite.physicsBody.collisionBitMask = 1;
16        
17          [FirendPlane.PlayerBulletSprite runAction:[SKAction sequence:@[[SKAction moveToY:DEVICE_Height+50 duration:1.5],[SKAction removeFromParent]]]];
18         bulletTime=0;
19     }
20    
21     
22 }

 4、update中增長bullet初始化的方法blog

2 -(void)update:(CFTimeInterval)currentTime {
3    
7     [self PlayerBulletFire];
8 }

5、實現場景動力檢測代理資源

 下面我說明下:由於在前面的代碼中增長了對子彈和敵對精靈的重力碰撞檢測的代碼,因此當爲此類型的兩個單位碰撞到一塊兒以後,場景就會自動執行

下面的代理,下面的代理就是將兩個相互碰撞的精靈移出場景層。

1  -(void)didBeginContact:(SKPhysicsContact *)contact
2  {
3    [contact.bodyA.node removeFromParent];
4    [contact.bodyB.node removeFromParent];
5    
6  }

 

 

本人創業作的一款androidApp, 下載量已經有2000多萬,各類當前熱門的網絡手機獎勵紅包所有集成,另外還有熱門電影和淘寶高額優惠券!很適合各種型的用戶。

 

相關文章
相關標籤/搜索