Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用动作移动精灵时不发生花栗鼠碰撞

使用动作移动精灵时不发生花栗鼠碰撞
EN

Stack Overflow用户
提问于 2016-03-03 20:03:53
回答 2查看 308关注 0票数 0

这确实是一个基本的问题,但我正在用一个物理体移动一个精灵A,而不是另一种有另一个物理体的精灵B。我预计这些机构会调用碰撞回调oncontact。它们使用setCategoryBitmask()设置各自的类别位掩码,并使用setContactTestBitmask()分别设置彼此的类别。

只要我不移动sprite A,冲突就能工作。我假设问题是我使用cocos2d操作移动sprite A,我需要做一些其他的事情。但是使用cocos2d操作来编写这样的脚本在我看来比我能想到的任何事情都简单得多。

  • 移动雪碧A使用物理呼叫。(看起来有很多工作要做,而且看起来很难达到精确的脚本完美)
  • 用update()代替我自己的碰撞检测。(看起来也是一堆工作,特别是如果精灵被旋转等)

还有别的捷径吗?还是我错过了别的什么?

EN

回答 2

Stack Overflow用户

发布于 2016-03-03 23:59:07

最后,我做了“在update()中做我自己的碰撞检测”。这不是太成问题。

像这样的更新()..。

代码语言:javascript
运行
AI代码解释
复制
const Rect RECT_A = spriteA->getBoundingBox();
for (auto spriteB : someparent->getChildren()) {
    const Rect RECT_B = spriteB->getBoundingBox();
    if (RECT_A.intersectsRect(RECT_B)) {
         // Hit
    }
}
票数 0
EN

Stack Overflow用户

发布于 2016-03-09 06:13:56

接触检测应该是好的,而结肠不起作用。

代码语言:javascript
运行
AI代码解释
复制
Scene* HelloWorld::createScene()
{
    // 'scene' is an autorelease object
    auto scene = Scene::createWithPhysics();

    // 'layer' is an autorelease object
    auto layer = HelloWorld::create();

    // add layer as a child to scene
    scene->addChild(layer);

    scene->getPhysicsWorld()->setDebugDrawMask(PhysicsWorld::DEBUGDRAW_ALL);
    scene->getPhysicsWorld()->setGravity(Vec2::ZERO);

    // return the scene
    return scene;
}

bool HelloWorld::init()
{
   if ( !Layer::init() )
    {
        return false;
    }

    auto createSprite = [this](const Vec2& pos) {
        auto sprite = Sprite::create();
        auto bodyA = PhysicsBody::createCircle(20);
        sprite->setPhysicsBody(bodyA);
        sprite->setPosition(pos);

        bodyA->setCollisionBitmask(0xff);
        bodyA->setCategoryBitmask(0xff);
        bodyA->setContactTestBitmask(0xff);

        return sprite;
    };

    auto spriteA = createSprite(Vec2(300, 300));
    auto moveBy = MoveBy::create(1.f, Vec2(200, 200));
    spriteA->runAction(moveBy);

    auto spriteB = createSprite(Vec2(350, 350));

    addChild(spriteA);
    addChild(spriteB);

    auto contactListener = EventListenerPhysicsContact::create();
    contactListener->onContactBegin = [=](PhysicsContact& contact) {
        auto a = contact.getShapeA()->getBody()->getNode();
        auto b = contact.getShapeB()->getBody()->getNode();

        assert((a == spriteA && b == spriteB) || (a == spriteB && b == spriteA));

        log("It is working");

        return false;
    };

    _eventDispatcher->addEventListenerWithSceneGraphPriority(contactListener, this);

    return true;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35787782

复制
相关文章
pygame游戏精灵(上)-碰撞检测
pygame.sprite.collide_rect 方法用于检测两个精灵是否有碰到,没碰到result返回0,碰到返回1.
叶子陪你玩
2021/10/11
2.3K0
Unity精灵动画 2D碰撞
将包含多个小图的一张大图SpriteMode设置为Multiple,在SpriteEditor中将素材进行切割,得到小的图片资源
祝你万事顺利
2019/05/28
1K0
动作游戏中的碰撞系统
对于熟悉动作游戏系统制作的玩家来说,这个应该算是常识了,不过还是写一下吧。 毕竟,可能有些同学还没看过。 在动作游戏里,角色的『图』与实际产生的效果是不完全对等的。 例如这样一个动作: 怎么才能判断,
沙因Sign
2018/04/18
2.1K0
动作游戏中的碰撞系统
cocos3.X拖动精灵移动
2、一个触摸事件 listener ,设置listener的onTouchBegan,onTouchMoved,onTouchEnded;
立羽
2023/08/24
2730
学习 PixiJS — 碰撞检测
版权声明:本文为博主原创文章,欢迎转载,转载请注明出处。 https://blog.csdn.net/FE_dev/article/details/87646110
FEWY
2019/05/26
2K0
按键精灵——如何留下鼠标移动轨迹
某些场景,需要留下鼠标移动轨迹,比较合乎视觉感受,不然光标闪来闪去,会不会翻车且不说,对眼睛肯定是不好的刚好上周有小伙伴咨询后台鼠标移动的问题,虽然我没解决,也不知道最终大佬给的方案是否解决了问题。但是解决问题的思路值得探讨和学习。
Ed_Frey
2019/12/19
5K0
cocos2d-x精灵移动的方法
想要实现子弹的的飞行效果,又不想在每帧Update里计算位置,最好的方法调用CCMoveTo
全栈程序员站长
2022/07/12
4130
Cocos2d-x初学者教程
本文翻译自 https://www.raywenderlich.com/网站上Guanghui Qu写的2015年4月30号的一篇博文 Cocos2d-x Tutorial for Beginners,他使用的Cocos2d-x的版本是 version 3.5。另外,关于在Windows10下使用Cocos2d-x 3.17.2构建项目的,可以参考我之前写的博客: Win10+Python2.7.14+cocos2d-x-3.17.2+VS2017环境搭建
ccf19881030
2020/10/09
6.6K0
一个没有对手的英雄是什么体验?如何在你的Python游戏中添加反派
在本系列的前几篇文章(请参阅第1部分,第2部分,第3部分和第4部分)中,您学习了如何使用Pygame和Python在尚未出现的空白游戏世界中构建可玩角色。但是,没有恶人可打的英雄岂不是很难受?
五月Rambo
2019/12/09
1.7K0
一个没有对手的英雄是什么体验?如何在你的Python游戏中添加反派
html精灵图跟img标签,css精灵图怎么使用?
什么是css精灵图(sprite)?css精灵图怎么使用?下面本篇文章就来给大家介绍一下css精灵图的使用。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。
全栈程序员站长
2022/08/23
2K0
html精灵图跟img标签,css精灵图怎么使用?
Python之pygame学习精灵碰撞做一个躲避球游戏(13)
获取鼠标返回的坐标,用这个坐标来画圆的时候,设置好不能超出边框,结果圆居然能出去????
萌海无涯
2019/08/20
3.2K0
Python之pygame学习精灵碰撞做一个躲避球游戏(13)
开源跨平台移动项目Ngui【Action动作系统】
Ngui简介 这是一个GUI的排版显示引擎和跨平台的GUI应用程序开发框架,基于NodeJS/OpenGL,这也是第一个在移动端Android/iOS融合NodeJS的前端GUI项目,至此JavaSc
IMWeb前端团队
2017/12/29
1K0
开源跨平台移动项目Ngui【Action动作系统】
这是一个GUI的排版显示引擎和跨平台的GUI应用程序开发框架,基于NodeJS/OpenGL,这也是第一个在移动端Android/iOS融合NodeJS的前端GUI项目,至此JavaScript成为了真正意义上前后端通吃的语言。
IMWeb前端团队
2019/12/03
4080
SpriteKit动画小游戏
Spritekit简介 Spritekit是苹果IOS7中引入的一个2D游戏引擎框架,可以实现各种动画效果,在这之前业界比较优秀的游戏引擎是cocos2d,支持场景切换、精灵和精灵表单、动作、动画和特
MelonTeam
2018/01/04
5.1K1
SpriteKit动画小游戏
HTML网页精灵图的使用
我们在制作网页的时候有些图片是在一起的,没有办法进行插入图片,这样精灵图的使用就帮助我们解决了这一问题。一下方式为例:
全栈程序员站长
2022/08/27
1.3K0
HTML网页精灵图的使用
BottomSheet底部动作条使用
底部动作条 底部动作条(Bottom Sheets)是一个从屏幕底部边缘向上滑出的一个面板,使用这种方式向用户呈现一组功能。底部动作条呈现了简单、清晰、无需额外解释的一组操作。 使用环境 底部动作条(Bottom Sheets)特别适合有三个或者三个以上的操作需要提供给用户选择、并且不需要对操作有额外解释的情景。如果只有两个或者更少的操作,或者需要详加描述的,可以考虑使用菜单(Menu)或者对话框替代。 底部动作条(Bottom Sheets)可以是列表样式的也可以是宫格样式的。宫格布局可以增加视觉的清晰
xiangzhihong
2018/02/05
1.9K0
BottomSheet底部动作条使用
DeepMind开源强化学习环境,灵活可配置,计算资源有限的小型实验室也能用
想想DeepMind训练的通用棋类AI AlphaZero,碾压一票同类选手,但堆砌了实验室里5064个TPU的算力。谷歌财大气粗,但小实验室就无法复制了。
量子位
2019/08/21
5830
DeepMind开源强化学习环境,灵活可配置,计算资源有限的小型实验室也能用
Pygame入门4——使用精灵类重构
如果你完成了前3章的代码,应该会发现代码很乱。想更改某个代码?查找困难、修改起来更困难!不断添加的新功能让我们的代码越来越复杂,难以阅读。
一只大鸽子
2022/12/06
6380
Pygame入门4——使用精灵类重构
从零开始学会用Python3做捕鱼达人游
首先对捕鱼达人这款游戏做个简单了解。捕鱼达人是前几年特别火的一款游戏,他是一款以深海狩猎为题材的休闲竞技游戏。2009年《捕鱼达人》上线,最初以简单轻松的捕鱼玩法获得了玩家的喜爱。随后几年,获得了游戏工委颁发的“游戏十强”2015年度十大最受欢迎移动网络游戏奖等多项奖项。郑重宣布捕鱼达人的地位。
py3study
2020/01/06
1.1K0
从零开始学会用Python3做捕鱼达人游
点击加载更多

相似问题

Pygame精灵碰撞随机移动

12

自上而下使用移动精灵处理2d精灵碰撞?

22

花栗鼠碰撞太软

24

将花栗鼠的身体移动到精灵位置

21

花栗鼠形状不碰撞

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文