CGRect 随 CCSprite 旋转而变化?
Posted
技术标签:
【中文标题】CGRect 随 CCSprite 旋转而变化?【英文标题】:CGRect changes with CCSprite Rotation? 【发布时间】:2011-12-28 10:43:30 【问题描述】:我正在尝试使用以下方法缩放和旋转 CCSprite
[rectangleSprite setRotation:touch1.y];
rectangleSprite.scaleX=(touch1.x-touch2.x)/100;
rectangleSprite.scaleY=(touch1.y-touch2.y)/100;
但是当我缩放或旋转精灵时,它的 CGRect 会扩展以覆盖整个旋转区域,并且通过 CGRectIntersectsRect 进行的碰撞检测不起作用。经过大量搜索后,我遇到了以下这样的解决方案,但它们似乎不起作用
how to check for collision with rotated CGRect?
旋转后,我如何应用 CGRectApplyAffineTransform 来根据旋转获得新的矩形,或者还有其他可能的方法吗? 我正在以下列方式应用变换,但我得到的矩形具有负原值..我可能做错了什么?
CGAffineTransform affine;
// add a rotate
affine = CGAffineTransformMakeRotation(-CC_DEGREES_TO_RADIANS(angle));
CGRect start =[rectangleSprite boundingBox];
NSLog(@"cg rect %f %f",start.size.height ,start.size.width);
CGRect newRect = CGRectApplyAffineTransform(start, affine);
NSLog(@"cg rect %f %f",rct.origin.x,rct.origin.y);
【问题讨论】:
【参考方案1】:您始终可以利用与 cocos2d 打包的物理库之一为您进行碰撞检测,而不是滚动您自己的碰撞检测。您只需让物理实体在更新函数中跟随您的精灵位置和旋转,而不是相反,因此物理引擎不会为您移动您的精灵。
【讨论】:
是的,在 Ray Wenderlich 优秀教程的帮助下,我决定使用 Box2d 进行碰撞检测。谢谢 Ray 的网站很棒!网络上一些最好的教程以上是关于CGRect 随 CCSprite 旋转而变化?的主要内容,如果未能解决你的问题,请参考以下文章