在圆周上添加精灵

Add a sprite on circumference of a circle

我想在圆的圆周上随机生成精灵,但研究了几个小时后,我还是想不出任何解决办法。 这就是我到目前为止能做的

我为此使用了这个公式:

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);

但我想要类似的东西(具有正确的角度,我在示例图像中做不到)

请提出一些精确的解决方案。感谢您的宝贵时间!

首先,它是 "circumference" 而不是 "circumstance"(这将有助于您的搜索)

其次,您使用的是图片的大小,而不是图片内的圆圈。

第三,您需要使用基本的三角函数来求解。确定圆上的点需要使用 sincos 函数。找到圆心和半径后,只要稍微研究一下,这些应该很容易计算出来。

基本三角知识 -- sincos 是你的朋友。

示例:

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).