在圆周上添加精灵
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"(这将有助于您的搜索)
其次,您使用的是图片的大小,而不是图片内的圆圈。
第三,您需要使用基本的三角函数来求解。确定圆上的点需要使用 sin
和 cos
函数。找到圆心和半径后,只要稍微研究一下,这些应该很容易计算出来。
基本三角知识 -- 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).
我想在圆的圆周上随机生成精灵,但研究了几个小时后,我还是想不出任何解决办法。 这就是我到目前为止能做的
我为此使用了这个公式:
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"(这将有助于您的搜索)
其次,您使用的是图片的大小,而不是图片内的圆圈。
第三,您需要使用基本的三角函数来求解。确定圆上的点需要使用 sin
和 cos
函数。找到圆心和半径后,只要稍微研究一下,这些应该很容易计算出来。
基本三角知识 -- 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).