Cocos2d-x3.2 碰撞检测--矩形


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

//GameScene.h

 

#include "cocos2d.h"

 

USING_NS_CC;

 

class GameScene : public cocos2d::Layer

{

public:

    static cocos2d::Scene* createScene();

     

    virtual bool init();

     

    virtual bool onTouchBegan(Touch *touch, Event *unused_event);

    virtual void onTouchMoved(Touch *touch, Event *unused_event);

     

    CREATE_FUNC(GameScene);

     

private:        //注意不能用auto关键字

    Size size;

    Sprite *sprite1, *sprite2;

    Label *label;

};

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

//GameScene.cpp

 

//  Created by Jacedy on 14-8-11.

 

#include "GameScene.h"

 

USING_NS_CC;

 

cocos2d::Scene* GameScene::createScene()

{

    auto scene = Scene::create();   //创建一个场景

    auto layer = GameScene::create();   //创建一个图层

    scene->addChild(layer);

    return scene;

}

 

//初始化当前的图层

bool GameScene::init()

{

    if(!Layer::init())      //初始化父类

        return false;

     

    //获取屏幕大小

    size = Director::getInstance()->getVisibleSize();

    //auto size = Director::getInstance()->getWinSize();

    //添加一个图片精灵

    sprite1 = Sprite::create("Icon.png");

    sprite1->setPosition(Vec2(size.width/2, size.height/2));

    this->addChild(sprite1);

     

    sprite2 = Sprite::create("Icon.png");

    sprite2->setPosition(Vec2(size.width*0.4, size.height/2));

    this->addChild(sprite2);

     

    label = Label::createWithSystemFont("No collision""Marker Felt", 50);

    label->setPosition(Vec2(size.width/2, size.height*0.7));

    this->addChild(label);

     

    //创建监听事件对象

    auto listener = EventListenerTouchOneByOne::create();

     

    //定义监听事件的回调函数

    listener->onTouchBegan = CC_CALLBACK_2(GameScene::onTouchBegan, this);

    listener->onTouchMoved = CC_CALLBACK_2(GameScene::onTouchMoved, this);

     

    //在事件分发器中注册

    _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);

     

    return true;

}

 

bool GameScene::onTouchBegan(Touch *touch, Event *unused_event)

{

    //获取触屏位置

    Point pos = touch->getLocation();

     

    sprite2->setPosition(pos);

     

    log("TouchBegan");

     

    return true;

}

 

void GameScene::onTouchMoved(Touch *touch, Event *unused_event)

{

    Point pos = touch->getLocation();

     

    sprite2->setPosition(pos);

     

    //判断两个精灵是否相交

    if (sprite2->getBoundingBox().intersectsRect(sprite1->getBoundingBox()))    //3.0改变处

        label->setString("Collision!");

    else

        label->setString("No collision");

     

    log("TouchMoved");

}


时间: 2024-11-05 22:03:27

Cocos2d-x3.2 碰撞检测--矩形的相关文章

cocos2d x3 6移植安卓-cocos2d-x3.6移植安卓时出现图片中错误如何解决?

问题描述 cocos2d-x3.6移植安卓时出现图片中错误如何解决? 解决方案 这是安卓的版本问题啊.你NDK设置编译的andorid17..但是androidMainfest.xml里设置的是最少 9,改下.把9改成17看看 解决方案二: 这是安卓的版本问题啊.你NDK设置编译的andorid17..但是androidMainfest.xml里设置的是最少 9,改下.把9改成17看看

cocos2d x3 0bate相关-Cocos2d-x3.0bate版,关于粒子特效

问题描述 Cocos2d-x3.0bate版,关于粒子特效 用粒子编辑器生成个.plist文件,如何在代码中加载,以及控制其开启和关闭,求大神指点

Cocosd2d实例教程(五) Cocos2d添加虚拟摇杆控制器

1.介绍 cocos2d为我们提供了好用的摇杆控制器,主要是对ZJoystick.h和ZJoystick.m的添加,实现了如下图的功能.通过摇杆可以控制图中精灵的移动.(但是还有一个技术性问题亟待解决,就是精灵移动后会有一个重影留在初始位置) 2.摇杆的实现 1) 将资源中的ZJoystick文件夹加到工程中(页面下方提供下载地址), 精灵的添加以及移动前面已经讲了,不知道的同学可以看教程四.工程名字为ControlWalking 2)修改HelloWorldLayer.h文件.加入一些需要的节

Cocosd2d实例教程(三) Cocos2d瓦片地图的导入

上一节讲了如何使用Tiled制作瓦片地图,下面讲一下如何将地图导入游戏中. 第一步:将生成的文件导入resource中,如图,分别为地图和图片集 第二步:在HelloWorldLayer.h中修改代码,有一定基础的人还是比较好理解的. #import <GameKit/GameKit.h> // When you import this file, you import all the cocos2d classes #import "cocos2d.h" // Hello

javascript制作游戏开发碰撞检测的封装代码_javascript技巧

在JavaScript开发Web游戏时,需要使用到碰撞检测时,为了方便开发,封装了矩形和圆形的两个碰撞检测方式. [附带案例操作捕获一枚] [注意:代码上未做优化处理] 演示图 角色攻击区域碰撞检测.gif 塔防案例.gif 矩形区域碰撞检测 /** * 矩形区域碰撞检测 * Created by Administrator on 14-4-7. * author: marker */ function Rectangle(x, y, _width, _height){ this.x = x;

【Cocos2d-x】开发实战-Cocos中的字符串、标签和中文乱码

本篇博客讲解: 1.Ccocos2d-x中的字符串 2.使用标签 3.中文乱码问题 Ccocos2d-x中的字符串 使用const char和stdstring 使用cocos2d__String 数据类型之间的转换 Win32平台下中文乱码问题 解决方法一 解决方法二 解决方法三 使用标签 LabelTTF LabelAtlas LabelBMFont Cocos2d-x 3x标签类Label 标签中文乱码问题 源代码下载地址 Ccocos2d-x中的字符串 使用const char*和std

《Cocos2D权威指南》——2.4 碰撞检测

2.4 碰撞检测 很快大家就会发现,射出的子弹和敌机都是"擦肩而过",毫无威力,这显然不合逻辑.这里我们介绍Cocos2D里常用的碰撞检测方法,用于检测游戏对象之间的碰撞.虽然这种碰撞比较简单,检测精度也不是很高,但是对于一般游戏来说已经足够了. 在介绍实际的碰撞检测方法之前,我们需要一个辅助方法,根据精灵当前的位置算出它的"可碰撞区域",如代码清单2-24所示. 代码清单2-24 辅助方法的实现 -(CGRect) rectOfSprite:(CCSprite*)

Android游戏开发之碰撞检测(矩形碰撞、圆形碰撞、像素碰撞)_Android

本文为大家分享了Android游戏开发之碰撞检测,供大家参考,具体内容如下 矩形碰撞 原理: 两个矩形位置 的四种情况 不是这四中情况 则碰撞 圆形碰撞 原理: 利用两个圆心之间的距离进行判定.当两个圆心的距离小于半径之和则碰撞. 像素碰撞 原理:不适用 遍历所有像素 检测 太多了 多矩形碰撞 原理:设置多个矩形碰撞检测区域 检测碰撞矩形数组 与另一碰撞矩形数组之间的位置关系. 矩形碰撞 代码: public class MySurfaceView extends SurfaceView imp

【Cocosd2d实例教程八】Cocos2d实现碰撞检测(含实例)

(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.介绍      说到碰撞检测,最简单直观的例子就是超级玛丽里的吃金币功能,当两个物体碰撞在一起产生一定的效果.下面上图介绍下这章的实例.当机器人a走到机器人b的身上时,机器人b消失. 2.具体实现方式     其实思路很简单,就是规定每个精灵有他们自己的一个作用范围,当两个精灵的作用范围重叠时,一个精灵的不可见就可以了.      关于摇杆器控制精灵移动这些在前面的章节讲过了,就不多说.      首先在