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;
}
我在切换一个场景后,使用这个代码,代码没有报错,但是在调试的时候,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;
}