本人开发的开发者技术变现资源聚集地,大家支持下,下面是网址

https://www.baiydu.com

一、说明
       今天给角色精灵增加了子弹发射功能,增加了子弹与敌对精灵的碰撞检测,当角色精灵子弹与敌对精灵碰撞后,它们都会从屏幕上消失。

二、场景层SKScene的修改

1、 在初始化场景层的方法中增加下面代码
self.physicsWorld.contactDelegate = self;

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

2、初始化场景层增加场景动力检测代理

 - (instancetype)initWithSize:(CGSize)size
{
if (self = [super initWithSize:size]) { NearbyArray=[[NSMutableArray alloc]init];
/*第一个场景背景节点*/
UIImage *farTextureImage=[UIImage imageNamed:@"planeBack"];
SKTexture *farTexture = [SKTexture textureWithImage:farTextureImage]; SKSpriteNode *farTextureSpriteOne = [SKSpriteNode spriteNodeWithTexture:farTexture size:self.size];
// farTextureSpriteOne.anchorPoint=CGPointMake(DEVICE_Width/2, DEVICE_Height/2);
farTextureSpriteOne.zPosition=;
farTextureSpriteOne.position=CGPointMake(self.frame.size.width/, self.frame.size.height/ ); /*第二个场景背景节点*/
UIImage *farTextureImageTwo=[UIImage imageNamed:@"planeBack"];
SKTexture *farTextureTwo = [SKTexture textureWithImage:farTextureImageTwo];
SKSpriteNode *farTextureSpriteTwo = [SKSpriteNode spriteNodeWithTexture:farTextureTwo size:self.size];
//farTextureSpriteTwo.anchorPoint=CGPointMake(0, 0);
farTextureSpriteTwo.zPosition=;
farTextureSpriteTwo.position=CGPointMake(farTextureSpriteOne.position.x, -(self.frame.size.height/-)); /*第三个场景背景节点*/
UIImage *farTextureImageThree=[UIImage imageNamed:@"planeBack"];
SKTexture *farTextureThree = [SKTexture textureWithImage:farTextureImageThree]; SKSpriteNode *farTextureSpriteThree =[SKSpriteNode spriteNodeWithTexture:farTextureThree size:self.size]; farTextureSpriteThree.zPosition=;
farTextureSpriteThree.position=CGPointMake(farTextureSpriteOne.position.x, -(self.frame.size.height/+self.frame.size.height-)); [self addChild:farTextureSpriteOne];
[self addChild:farTextureSpriteTwo];
[self addChild:farTextureSpriteThree]; /*把三个场景背景节点加到一个数组中去,等会滚动之后,才好快速获取每个节点,重置postion*/
[NearbyArray addObject:farTextureSpriteOne];
[NearbyArray addObject:farTextureSpriteTwo];
[NearbyArray addObject:farTextureSpriteThree]; FirendPlane= [SKFoePlane createPlayerPlane];
FirendPlane.zPosition=;
FirendPlane.position=CGPointMake(self.frame.size.width/, );
[self addChild:FirendPlane];
/*增加两个精灵产生动力之后的代理*/
self.physicsWorld.contactDelegate = self;
self.physicsWorld.gravity = CGVectorMake(,);
}
return self; }

三、初始化角色精灵的子弹

 -(void)PlayerBulletFire
{ bulletTime++;
if (bulletTime==) {
UIImage *RolePlaneImage=[UIImage imageNamed:@"加号"]; SKTexture *RolePlaneImageTextture = [SKTexture textureWithImage:RolePlaneImage];
FirendPlane.PlayerBulletSprite=[SKSpriteNode spriteNodeWithTexture:RolePlaneImageTextture size:CGSizeMake(DEVICE_Width*0.06, DEVICE_Width*0.06)];
FirendPlane.PlayerBulletSprite.zPosition=;
FirendPlane.PlayerBulletSprite.position=CGPointMake(FirendPlane.position.x, FirendPlane.position.y+ );
[self addChild:FirendPlane.PlayerBulletSprite];
FirendPlane.PlayerBulletSprite.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:FirendPlane.PlayerBulletSprite.size]; FirendPlane.PlayerBulletSprite.physicsBody.collisionBitMask = ; [FirendPlane.PlayerBulletSprite runAction:[SKAction sequence:@[[SKAction moveToY:DEVICE_Height+ duration:1.5],[SKAction removeFromParent]]]];
bulletTime=;
} }

四、update中增加bullet初始化的方法

 -(void)update:(CFTimeInterval)currentTime {

     [self PlayerBulletFire];
}

五、实现场景动力检测代理

下面我说明下:因为在前面的代码中增加了对子弹和敌对精灵的重力碰撞检测的代码,所以当为此类型的两个单位碰撞到一起之后,场景就会自动执行

下面的代理,下面的代理就是将两个相互碰撞的精灵移出场景层。

  -(void)didBeginContact:(SKPhysicsContact *)contact
{
[contact.bodyA.node removeFromParent];
[contact.bodyB.node removeFromParent]; }

本人创业做的一款androidApp, 下载量已经有2000多万,各种当前热门的网络手机奖励红包全部集成,另外还有热门电影和淘宝高额优惠券!很适合各类型的用户。

 

IOS 2D游戏开发框架 SpriteKit-->续(完善角色功能)的更多相关文章

  1. IOS 2D游戏开发框架 SpriteKit

    最近发现Xcode自带的2D游戏开发框架SpriteKit可以直接引入到APP中进行混合开发,这就是说可以开发出既带业务应用又带游戏的苹果APP,咋怎么觉得这是一个自己的小发现....呵呵....., ...

  2. IOS 2D游戏开发框架 SpriteKit-->续(创建用户角色精灵--原创)

    一.主要实现   今天spritekit实现创建玩家角色精灵(SKSpriteNode *), 增加角色精灵的手势操作,这里增加的手势计算方法与objective-c中是不一样的,因为objectiv ...

  3. IOS 2D游戏开发框架 SpriteKit-->续(创建敌对精灵)

    这次包括之后讲的spritekit 我都会围绕一个案例来说,这个案例就是一个简单的2d飞机大战游戏,今天这里我讲创建敌对精灵,就是敌对飞机,敌对飞机不停的被刷新到屏幕上.....当然这里涉及到的类其实 ...

  4. IOS 2D游戏开发框架 SpriteKit-->续(postion,锚点,游戏滚动场景)

    一. Postion 这里的postion和app开发中的layer.postion是一样的,postion的值代表该视图在父节点中的相对位置, 比如一个试图的父节点是self.view, 这里我们想 ...

  5. Unity3d Platformer Pro 2D游戏开发框架使用教程

    前言 Platformer Pro框架是Unity3d AssetStore上一个非常强大和受欢迎的2d游戏开发框架,这个教程的大部分翻译于官方文档,一部分是工作总结,还有一部分是视频教程文档化.这个 ...

  6. Unity 2D游戏开发教程之摄像头追踪功能

    Unity 2D游戏开发教程之摄像头追踪功能 上一章,我们创建了一个简单的2D游戏.此游戏中的精灵有3个状态:idle.left和right.这看起来确实很酷!但是仅有的3个状态却限制了精灵的能力,以 ...

  7. 初识phaser框架——开源的HTML5 2D游戏开发框架

    背景: 在网上看到,65行实现flappy bird,感到很好奇.原来是使用开源的2D游戏框架 phaser开发的. 什么是phaser2D游戏开发框架呢? 借鉴与网上的资料: 1.    Phase ...

  8. iOS开发实战-基于SpriteKit的FlappyBird小游戏

    写在前面 最近一直在忙自己的维P恩的事情 公司项目也是一团乱 于是...随手找了个游戏项目改了改就上线了,就当充数了. SpriteKit简介 SpriteKit是iOS 7之后苹果推出的2D游戏框架 ...

  9. CosmosEngine - Unity3D /2D 轻量级游戏开发框架

    CosmosEngine https://github.com/mr-kelly/CosmosEngine 快速入门 简介 特性 约定 整体架构图 使用经验 工作流 未来功能 快速入门 1.将NGUI ...

随机推荐

  1. C++的性能C#的产能?! - .Net Native 系列向导

    之前一文<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATIVE初窥> 获得很多朋友支持和鼓励,也更让我坚定做这项技术的推广者,希望能让更多的朋友了解这项技术,于是先从官方 ...

  2. EF:The provider did not return a ProviderManifest instance

    报告错误1:指定的存储区提供程序在配置中找不到,或者无效. 报告错误2:System.Data.ProviderIncompatibleException: The provider did not ...

  3. uwp如何建立任何形状的头像,如圆形,方形,六边形等

    最近掌上英雄联盟更新了新的界面,其中“我”界面的更新比较大,我目前还在加紧跟进.在做这个界面的时候,这个头像我想了一下,其实挺好解决的.先上个原图 这个头像一开始我也完全找不到头绪,然后我把头像放大了 ...

  4. 创建分区表和查看分区表的Metadata

    未分区的表,只能存储在一个FileGroup中:对table进行分区后,每一个分区都存储在一个FileGroup中.表分区是将逻辑上一个完整的表,按照特定的字段拆分成Partition set,分散到 ...

  5. SQL Server中的事务与锁

    了解事务和锁 事务:保持逻辑数据一致性与可恢复性,必不可少的利器. 锁:多用户访问同一数据库资源时,对访问的先后次序权限管理的一种机制,没有他事务或许将会一塌糊涂,不能保证数据的安全正确读写. 死锁: ...

  6. Lightmaping

    一.基本知识点 1.Baked Only:不会传入shader,只有烘焙时才有用,也就是_LightColor0等这种变量不会表示一个Baked Only Light(前提是场景有lightmap,如 ...

  7. XenServer pool 移除server 设置master

    如果因为Pool中Master主机由于某种原因导致失效,会引起整个Pool进入紧急模式,恢复步骤如下: 在成员服务器上输入如下命令 # xe host-emergency-ha-disable     ...

  8. Mac OS apache php配置

    1.进入Apache配置文件sudo vi /etc/apache2/httpd.conf    找到#LoadModule php5_module libexec/apache2/libphp5.s ...

  9. iOS开发之SQLite-C语言接口规范(二) —— Prepared Your SQL Statements

    在<SQLite的C语言接口规范(一)>中介绍了如何去连接打开数据库,本篇博客就介绍如何操作数据库,本篇主要给出了如何执行数据库查询语句(Select), 然后遍历结果集.本篇博客就直接使 ...

  10. 相克军_Oracle体系_随堂笔记012-undo

    undo表空间中undo段是自动生成的,oracle自动使用undo表空间的undo段. 作为高级DBA,需要了解Oracle是如何使用undo段的.这样出了性能问题才能够解决.   1.Undo表空 ...