上回写了在场景中显示飞机与子弹现在再来把他们的移动和边界写下
飞机的移动:首先创建一个监听事件,看飞机是否被拖动,再写一个被拖动之后的方法。方法里面先创建一个target继承飞机的所有属性,在给target设置
一个与飞机位置相等的矩形,再判断你鼠标点击的位置是否在矩形里面,再给飞机写一个移动的方法,如果给鼠标拖动,飞机就会随着鼠标的移动而移动
设置边界:设置边界的算法
if (target->getPositionX() + touch->getDelta().x >= visibleSize.width - target->getContentSize().width / 2){
target->setPositionX(visibleSize.width - target->getContentSize().width / 2);
}
else if (target->getPositionX() + touch->getDelta().x <= target->getContentSize().width / 2){
target->setPositionX(target->getContentSize().width / 2);
}
else{
target->setPositionX(target->getPositionX() + touch->getDelta().x);
}
if (target->getPositionY() + touch->getDelta().y >= visibleSize.height - target->getContentSize().height / 2){
target->setPositionY(visibleSize.height - target->getContentSize().height / 2);
}
else if (target->getPositionY() + touch->getDelta().y <= target->getContentSize().height / 2){
target->setPositionY(target->getContentSize().height / 2);
}
else{
target->setPositionY(target->getPosition().y + touch->getDelta().y);
}
};
子弹随着飞机的移动而移动:
首先创建一个飞机类:再进行判断,当飞机等于NULL的时候就new一个飞机,当飞机不为空就返回飞机。在创建一个子弹类,把返回的飞机当参数返回给子弹,在子弹的类里面把子弹发射的坐标变成飞机的坐标,这样就能实现随着飞机的移动,子弹的发射点也会跟着移动
b->setPosition(Vec2(this->feiji->fun()->getPositionX(), this->feiji->fun()->getPositionY()+b->getContentSize().height)); //子弹的坐标
auto bb = MoveTo::create(1, Point(this->feiji->fun()->getPositionX(), visibleSize.height + 100)); //子弹发射