Cocos2dx中RotateTo对旋转方向的处理
今天在写个demo的时候意外发现了一个跟rotate相关的有趣的事情。 // 通过tan值求arctan来得到旋转角度
auto diff = objRotateToward->getPosition() - objRotated->getPosition();
float angleRadians = atanf((float)diff.y / (float)diff.x);
float cocosAngle = CC_RADIANS_TO_DEGREES(angleRadians);
// ---part1 begin---
if (diff.x < 0)
{
cocosAngle += 180;
}
// ---part1 end---
// ---part2 begin---
cocosAngle = -cocosAngle;
// ---part2 end---**重点内容**
float rotateDuration = 10;
auto actionRotate = RotateTo::create(rotateDuration,cocosAngle);
第一部分和第二部分的先后顺序有没有关系呢,别看数值不一样,但是其实旋转到的位置是一样的。 (简单的几何问题,解释一下,不了解的可以看下,了解的就不要浪费时间了~ 虽然位置相同,但是旋转的方式其实是不同的,一个是正着转,另外一个是反着的,所以有一个会近一些,有一个会稍微远一些,除非正反都是180度~但是cocos2dx在处理这个角度的时候是怎么做的呢,是直接挑选比较近的方式来转,比如说210度和-150度,会选-150度来旋转。最好去试一下,我测试的cocos2dx的版本是3.6. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |