我对Cocos 2D-X很陌生,但在C ++中有一些不错的背景。我有一个精灵_rocket
(绑在Box2D身上)偶尔移动到我的屏幕的可见视图之外。我希望视图在精灵逼近屏幕边缘时自动缩小,以便精灵始终在视图中。当精灵返回到原始视图框架时,视图应缩放回原始大小。
我可以在更新功能中使用以下代码缩小:
Size winSize = Director::getInstance()->getWinSize();
if ((_rocket->getPosition().x - _rocket->getContentSize().width/2 < 10.0) ||
(_rocket->getPosition().x + _rocket->getContentSize().width/2 > winSize.width - 10.0) ||
(_rocket->getPosition().y - _rocket->getContentSize().width/2 < 10.0) ||
(_rocket->getPosition().y + _rocket->getContentSize().width/2 > winSize.height - 10.0))
{
this->setScale(this->getScale()-0.005);
}
但是,因为winSize
没有更新,所以这基本上会永远缩放,直到精灵返回到原始视图。我不确定如何更新winSize
,以便可以迭代使用它来查找屏幕的边缘。可能还有一种更容易的方法来解决这个问题。
答案 0 :(得分:0)
我不明白为什么winSize应该改变。 如果你的意思是_rock的内容不改变
你应该使用
auto size = _rocket->getBoundingBox().size;
答案 1 :(得分:0)
他们在cocos2d-x 3。+
中删除了一些有用的相机功能解决方法是缩放/移动包含游戏的图层,而不是尝试移动相机。