cocos2dx吧 关注:11,015贴子:33,611
  • 5回复贴,共1

cocos2d-x中setPosition()异常

只看楼主收藏回复

projectile->setPosition(player->getPosition());我一个项目中使用没有异常,代码也没有报错
我在切换一个场景后,使用这个代码,代码没有报错,但是在调试的时候,projectile->setPosition无法读取位置;
bool HelloWorld::onTouchBegan(Touch *touch, Event *unused_event)
{
//获取了场景坐标系中触摸的坐标,然后计算了这个点相对于玩家当前位置的偏移量。
Vec2 vec = touch->getLocation();
Vec2 offset = vec - player->getPosition();
// 玩家不能向后射击
if (offset.x < 0) {
return true;
}
// 在玩家所在的位置创建一个飞镖,将其添加到场景中。
auto projectile = Sprite::create("bo.png");
projectile->setPosition(player->getPosition());
this->addChild(projectile);
projectile->setTag(2);
_projectiles->addObject(projectile);
// 调用normalize()来将偏移量转化为单位向量,即长度为1的向量。将其乘以1000,就获得了一个指向用户触屏方向的长度为1000的向量
offset.normalize();
auto shootAmount = offset * 1000;
// 将此向量添加到飞镖的位置上
auto realDest = shootAmount + projectile->getPosition();
// 创建一个动作,将飞镖在2秒内移动到目标位置,然后将它从场景中移除。
auto actionMove = MoveTo::create(2.0f, realDest);
auto actionRemove = RemoveSelf::create();
projectile->runAction(Sequence::create(actionMove, actionRemove, nullptr));
return true;
}


IP属地:重庆1楼2018-12-12 23:38回复
    这个代码是我在网上找的,做出来没得问题,但是我自己加了个场景,切换后就是使用网上找的代码,代码没有报错,就是在攻击时,这行代码中projectile->setPosition无法读取player->getPosition()返回的参数


    IP属地:重庆2楼2018-12-12 23:41
    回复
      如果不切换场景,就直接用的话,projectile->setPosition一点问题都没有,它能正常读取projectile->setPosition返回的参数。
      请各位大佬赐教


      IP属地:重庆3楼2018-12-12 23:44
      回复


        IP属地:重庆4楼2018-12-12 23:50
        回复
          巧了,我也遇见了这个问题


          IP属地:重庆来自Android客户端5楼2018-12-12 23:54
          回复
            有没有大佬解决呀


            IP属地:重庆来自Android客户端6楼2018-12-13 00:16
            回复