Cocos2dx中RotateTo对旋转方向的处理

Cocos2dx中RotateTo对旋转方向的处理,第1张

概述今天在写个demo的时候意外发现了一个跟rotate相关的有趣的事情。 如果我们想要将一个物体旋转朝向另外一个物体的时候,一般都会采用如下的方法: // 通过tan值求arctan来得到旋转角度 auto diff = objRotateToward->getPosition() - objRotated->getPosition(); float angleRadians = a

今天在写个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);

第一部分和第二部分的先后顺序有没有关系呢,别看数值不一样,但是其实旋转到的位置是一样的。

(简单的几何问题,解释一下,不了解的可以看下,了解的就不要浪费时间了~
假如说对-30度分别做如上 *** 作,先进行第一部分再进行第二部分的话,-(-30+180) = -150,而反过来的话是 -(-30) + 180 = 210,发现什么了没,其实这是同一个位置,将两部分绝对值相加看看,150+210=360,这个可以用公式推出来,-x-180和-x+180的关系。)

虽然位置相同,但是旋转的方式其实是不同的,一个是正着转,另外一个是反着的,所以有一个会近一些,有一个会稍微远一些,除非正反都是180度~但是cocos2dx在处理这个角度的时候是怎么做的呢,是直接挑选比较近的方式来转,比如说210度和-150度,会选-150度来旋转。最好去试一下,我测试的cocos2dx的版本是3.6.

总结

以上是内存溢出为你收集整理的Cocos2dx中RotateTo对旋转方向的处理全部内容,希望文章能够帮你解决Cocos2dx中RotateTo对旋转方向的处理所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1063850.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存