cocos2d 角度转换 (精灵图片如何指向点击位置)

cocos 2d 世界坐标 为 左下角 为 原点(0,0点), 而角度为以x轴正方向 顺时针旋转 为角度正方形( 与教科书的逆时针相反 ),  所以在角度旋转中要注意。


向量的弧度为, 以x轴为参照, y轴正负为 角度 旋转方向 , 即 30 度 和 270 的 绝对值 相同, 符号不相同, 所以弧度为负值时, 只要将符号去掉, 转换为角度并设置即可,相反如果为正值, 则需要转换为角度后, 用 360 °  减去 得到的角度, 即可得出需要的旋转角度。

代码如下:


Sprite* spr = Sprite::create("CloseSelected.png");
spr->setPosition( Vec2(100, 40) );
this->addChild(spr);

//l = n(圆心角)× π(圆周率)× r(半径) / 180 = α(圆心角弧度数)× r(半径)

Vec2 posSpr = spr->getPosition();
Vec2 posTargetA(110, 50);//右上
log(" TargetA angel : %f ", posTargetA.getAngle());

Vec2 posTargetB(110, 30);
log(" TargetB angel : %f ", posTargetB.getAngle());


Vec2 posTargetC(90, 50);
log(" TargetC angel : %f ", posTargetC.getAngle());


Vec2 posTargetD(90, 30);
log(" TargetD angel : %f ", posTargetD.getAngle());


Vec2 posTarget = posTargetD;


Vec2 vecSurplus = (posTarget - spr->getPosition());
//spr->setRotation(45);
#if 1
if (vecSurplus.getAngle() < 0)
{
spr->setRotation(  CC_RADIANS_TO_DEGREES(  -vecSurplus.getAngle() ) );
}
else
{
// cocos 世界坐标系为 坐下角 为 0,0 点, 角度旋转为 沿x 正方向 顺时针 旋转 ( 一般教科书为 逆时针, 所以要转换一下 )
spr->setRotation( 360 -  CC_RADIANS_TO_DEGREES(vecSurplus.getAngle()) );
}
#endif 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值