【Cocosd2d实例教程八】Cocos2d实现碰撞检测(含实例)
生活随笔
收集整理的這篇文章主要介紹了
【Cocosd2d实例教程八】Cocos2d实现碰撞检测(含实例)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
(轉(zhuǎn)載請注明出處:http://blog.csdn.net/buptgshengod)
1.介紹
? ? ?說到碰撞檢測,最簡單直觀的例子就是超級瑪麗里的吃金幣功能,當(dāng)兩個物體碰撞在一起產(chǎn)生一定的效果。下面上圖介紹下這章的實(shí)例。當(dāng)機(jī)器人a走到機(jī)器人b的身上時,機(jī)器人b消失。2.具體實(shí)現(xiàn)方式
? ? 其實(shí)思路很簡單,就是規(guī)定每個精靈有他們自己的一個作用范圍,當(dāng)兩個精靈的作用范圍重疊時,一個精靈的不可見就可以了。 ? ? ?關(guān)于搖桿器控制精靈移動這些在前面的章節(jié)講過了,就不多說。 ? ? ?首先在HelloWorldLayer.h中定義精靈。 CCSprite *player;//機(jī)器人aCCSprite *enemy;//機(jī)器人b ? ? ?打開HelloWorldLayer.m。在init中改變代碼 -(id) init {// always call "super" init// Apple recommends to re-assign "self" with the "super's" return valueif( (self=[super init]) ) {//get screen's sizeCGSize winSize = [[CCDirector sharedDirector] winSize];//獲得屏幕大小//機(jī)器人benemy = [CCSprite spriteWithFile:@"2.png"];enemy.position = CGPointMake(winSize.width / 2+120,winSize.height/2);[self addChild:enemy z:1];//機(jī)器人aplayer = [CCSprite spriteWithFile:@"1.png"];player.position = CGPointMake(winSize.width / 2-50,winSize.height/2);[self addChild:player z:1];self.isTouchEnabled = YES;[self initJoystick];//遙感器[self scheduleUpdate];//啟動定時刷新}return self; } ? ? ? ?加入搖桿控制函數(shù),這里不多說了。 ? ? ? ?下面是關(guān)鍵的碰撞檢測代碼。 -(void) update:(ccTime)dt{[self collisionDetection:dt];//刷新下面定義的函數(shù) }//確定可碰撞范圍,作用域。CGRectMake四個參數(shù)意義:前兩個相對于左上角的x,y軸位置確定一個矩形,后兩個是舉行的長和寬 -(CGRect) rectOfSprite:(CCSprite*)sprite{return CGRectMake(sprite.position.x - sprite.contentSize.width / 2,sprite.position.y - sprite.contentSize.height /2,sprite.contentSize.width, sprite.contentSize.height); } //碰撞方法 -(void) collisionDetection:(ccTime)dt{//2.enemy & player collision detectionCGRect enemyRect = [self rectOfSprite:enemy];CGRect playRect = [self rectOfSprite:player];if (enemy.visible&& CGRectIntersectsRect(enemyRect, playRect)) {enemy.visible = NO;//機(jī)器人b消失[self unscheduleUpdate];//停止刷新}}源代碼下載地址
??
總結(jié)
以上是生活随笔為你收集整理的【Cocosd2d实例教程八】Cocos2d实现碰撞检测(含实例)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Cocosd2d实例教程七】Cocos
- 下一篇: 【android-tips】如何在and