码迷,mamicode.com
首页 > 移动开发 > 详细

创建3D模型/添加屏幕监听,点击屏幕时,精灵带有旋转的移动

时间:2015-04-20 16:57:21      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:



3D模型创建 //3D models
   
     auto model = Sprite3D::create("Sprite3DTest/boss1.obj");
   
     model->setScale(4);
   
     model->setTexture("Sprite3DTest/boss.png");
   
     model->setPosition3D(Vec3(s.width/2, s.height/2, 0));
   
     addChild(model);

EventListenerTouchOneByOne 监听
 EventListenerTouchOneByOne* _lis = EventListenerTouchOneByOne::create();
 _lis->onTouchBegan = [this](Touch* t,Event* e){
  CCLOG("onTouchBegan");
  return true; 
 };
 _lis->onTouchMoved = [this](Touch* t,Event* e){
  CCLOG("onTouchMoved");
  float dx = t->getDelta().x;
  Vec3 rot = _camControlMode->getRotation3D();
  rot.y += dx;
  _camControlMode->setRotation3D(rot);
  Vec3 woldPos;
  _camNode ->getNodeToWorldTransform().getTranslation(&woldPos);
  Camera::getDefaultCamera()->setPosition3D(woldPos);
  Camera::getDefaultCamera()->lookAt(_camControlMode->getPosition3D());
 };
 Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(_lis,this);

添加屏幕监听,点击屏幕时,精灵带有旋转的移动 
HelloWorld::HelloWorld()
{
 auto listener = EventListenerTouchOneByOne::create();
 listener->onTouchBegan = CC_CALLBACK_2(HelloWorld::onTouchBegan,this);
 listener->onTouchEnded = CC_CALLBACK_2(HelloWorld::onTouchEnded,this);
 _eventDispatcher->addEventListenerWithSceneGraphPriority(listener,this);

 auto sprite = Sprite::create("Images/grossini.png");
 
 auto layer = LayerColor::create(Color4B(155,55,0,25));
 addChild(layer,-1);

 addChild(sprite,0,kTagSprite);
 sprite->setPosition(20,150);

 sprite->runAction(JumpTo::create(4,Vec2(300,48),100,4));
 layer->runAction(RepeatForever::create(Sequence::create(FadeIn::create(1),FadeOut::create(1),nullptr)));

}

bool HelloWorld::onTouchBegan(Touch* touch,Event* event)
{
 return true;
}

void HelloWorld::onTouchEnded(Touch* touch,Event* event)
{
 auto location = touch->getLocation();
 auto s = getChildByTag(kTagSprite);
 s->stopAllActions();
 s->runAction(MoveTo::create(1,Vec2(location.x,location.y)));
 float o = location.x - s->getPosition().x;
 float a = location.y - s->getPosition().y;

 float at = (float) CC_RADIANS_TO_DEGREES(atanf(o/a));//反atanf

 if (a <0)
 {
  if (o<0)
  {
   at = 180 + fabs(at);
  }else
  {
   at = 180 - fabs(at);
  }
 }

 s ->runAction(RotateTo::create(1,at));
}
 

创建3D模型/添加屏幕监听,点击屏幕时,精灵带有旋转的移动

标签:

原文地址:http://blog.csdn.net/liubin8095/article/details/45151521

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!