Android 如何检测与随机生成的精灵和引擎的碰撞?

Android 如何检测与随机生成的精灵和引擎的碰撞?,android,andengine,Android,Andengine,首先对不起我的英语不好 情景: 我有三种雪碧 1.播放器 2.障碍物(生成随机X坐标) 3.矩形(障碍子对象) 我已经为每秒钟创建了自动生成障碍物,生成后,障碍物将随着重力而坠落。 每个障碍物都有一个长方形作为其子对象。我将使用此矩形检测与播放器的碰撞。 如果玩家与此矩形碰撞,我需要更改分数,如果玩家撞到障碍物,我需要杀死玩家 _scene.registerUpdateHandler(new TimerHandler(0.5f, true, new ITimerCallback() {

首先对不起我的英语不好

情景: 我有三种雪碧
1.播放器
2.障碍物(生成随机X坐标)
3.矩形(障碍子对象)

我已经为每秒钟创建了自动生成障碍物,生成后,障碍物将随着重力而坠落。
每个障碍物都有一个长方形作为其子对象。我将使用此矩形检测与播放器的碰撞。
如果玩家与此矩形碰撞,我需要更改分数,如果玩家撞到障碍物,我需要杀死玩家

_scene.registerUpdateHandler(new TimerHandler(0.5f, true, new ITimerCallback() {

        @Override
        public void onTimePassed(TimerHandler pTimerHandler) {
            int _coorx = randInt(0,_constants.CAMERA_WIDTH);

            // OBSTACLE
            _obstacle = new Sprite(_coorx, -50, _obstacletr, getVertexBufferObjectManager());
            _obstaclefd = PhysicsFactory.createFixtureDef(10.0f, 1.0f, 0.0f);
            _obstaclebody = PhysicsFactory.createCircleBody(_physicsworld, _obstacle, BodyType.DynamicBody, _obstaclefd);
            _physicsworld.registerPhysicsConnector(new PhysicsConnector(_obstacle, _obstaclebody, true, false));

            // OBSTACLE RECTANGLE
            _obstaclerectangle = new Rectangle(-_coorx, 0, _constants.CAMERA_WIDTH, 5, getVertexBufferObjectManager());
            _obstaclerectangle.registerUpdateHandler(new IUpdateHandler(){

                @Override
                public void onUpdate(float pSecondsElapsed) {
                    if(_obstaclerectangle.collidesWith(_player1)) {
                        _obstaclerectangle.setColor(1, 0, 0);
                    } else {
                        _obstaclerectangle.setColor(0, 1, 0);
                    }
                }

                @Override
                public void reset() {
                    // TODO Auto-generated method stub

                }

            });
            _obstacle.attachChild(_obstaclerectangle);

            _scene.attachChild(_obstacle);
        }

    }));

你需要一个联系人侦听器

创建实现ContactListener的碰撞器类:

public class Collider implements ContactListener {...}
然后将碰撞器类添加到世界:

youPhysicworld.setContactListener(collider);
在类碰撞器中,您将强制实现在物理事件(beginContact、endCOntact、preSolve、postSolve)发生时调用的方法。
在这些方法中,您可以随心所欲地处理事件。

已经解决。。我使用数组来保存sprite和onUpdate,通过检查数组索引来检测所有对象。但谢谢你的解决方案我可以用它解决其他问题