bool HelloWorld::init() { ////////////////////////////// // 1. super init first if ( !Layer::init() ) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); //定义世界的边界 auto body = PhysicsBody::createEdgeBox(visibleSize,PHYSICSBODY_MATERIAL_DEFAULT,5.0f); auto edgeNode = Node::create(); edgeNode->setPosition(Vec2(visibleSize.width/2,visibleSize.height/2)); edgeNode->setPhysicsBody(body); this->addChild(edgeNode); setTouchEnabled(true); //设置为单点触摸 setTouchMode(Touch::DispatchMode::ONE_BY_ONE); return true; } bool HelloWorld::onTouchBegan(Touch* touch, Event* event) { Vec2 location = touch->getLocation(); addNewSpriteAtPosition(location); return false; } void HelloWorld::addNewSpriteAtPosition(Vec2 p) { auto sp = Sprite::create("Ball.png"); sp->setTag(1); auto body = PhysicsBody::createCircle(sp->getContentSize().width / 2); sp->setPhysicsBody(body); sp->setPosition(p); this->addChild(sp); }
效果如下: