我想在圆周上随机生成精灵,但即使经过几个小时的研究,我也无法提出任何解决方案。 这就是我到现在为止所做的事情
我已经使用了这个公式:
Sprite * pin = Sprite::create("pin.png");
pin->setPosition(Vec2((_circle->getContentSize().width/2)*(0.7/3), _circle->getContentSize().height*0.7));
Sprite * pin2 = Sprite::create("pin.png");
pin2->setPosition(Vec2((_circle->getContentSize().width/2)*(0.6/3), _circle->getContentSize().height*0.6));
Sprite * pin3 = Sprite::create("pin.png");
pin3->setPosition(Vec2((_circle->getContentSize().width/2)*(0.8/3), _circle->getContentSize().height*0.8));
Sprite * pin4 = Sprite::create("pin.png");
pin4->setPosition(Vec2((_circle->getContentSize().width/2)*(0.9/3), _circle->getContentSize().height*0.9));
Sprite * pin5 = Sprite::create("pin.png");
pin5->setPosition(Vec2((_circle->getContentSize().width/2)*(1/3), _circle->getContentSize().height));
_circle->addChild(pin);
_circle->addChild(pin2);
_circle->addChild(pin3);
_circle->addChild(pin4);
_circle->addChild(pin5);
但我想要那样的东西(正确的角度,我在样本图像中无法做到)
请为它提出一些精确的解决方案。谢谢你的时间!
答案 0 :(得分:1)
首先,它是“周长”而非“环境”(这将有助于您的搜索)
其次,您使用的是图像的大小,而不是图像中的圆圈。
第三,您需要使用基本的三角法来解决问题。确定圆上的点需要使用sin
和cos
函数。在找到圆的中心及其半径后,只需进行一些研究就可以轻松计算出这些内容。
答案 1 :(得分:1)
基本触发 - sin
和cos
是您的朋友。
示例:
const float circle_x = ...;
const float circle_y = ...;
const float circle_radius = ...;
const float angle = ...;
const float x = cos(angle)*circle_radius + circle_x;
const float y = sin(angle)*circle_radius + circle_y;
// Draw stuff at (x, y).